From 3c148920be7d32f6e154418ac57b1984846bca6f Mon Sep 17 00:00:00 2001 From: Morgan Diverrez Date: Thu, 15 Aug 2024 17:53:41 +0200 Subject: [PATCH] [DERCBOT-1173] RAG Evaluation - langfuse --- .../src/main/python/server/poetry.lock | 1794 +++++++++-------- .../src/main/python/server/pyproject.toml | 2 +- .../tock-llm-indexing-tools/.env.exemple | 11 + .../python/tock-llm-indexing-tools/README.md | 41 +- .../docs/rag_testing_tools.png | Bin 335967 -> 32136 bytes .../export_run_results.py | 423 ++-- .../generate_dataset.py | 179 +- .../tock-llm-indexing-tools/poetry.lock | 173 +- .../tock-llm-indexing-tools/pyproject.toml | 19 +- .../rag_testing_tool.py | 112 +- .../ragquery.json.example | 55 + 11 files changed, 1593 insertions(+), 1216 deletions(-) create mode 100644 gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/.env.exemple create mode 100644 gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/ragquery.json.example diff --git a/gen-ai/orchestrator-server/src/main/python/server/poetry.lock b/gen-ai/orchestrator-server/src/main/python/server/poetry.lock index fe970127ea..df9c919877 100644 --- a/gen-ai/orchestrator-server/src/main/python/server/poetry.lock +++ b/gen-ai/orchestrator-server/src/main/python/server/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand. [[package]] name = "aiohappyeyeballs" @@ -13,102 +13,102 @@ files = [ [[package]] name = "aiohttp" -version = "3.10.9" +version = "3.10.10" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8b3fb28a9ac8f2558760d8e637dbf27aef1e8b7f1d221e8669a1074d1a266bb2"}, - {file = "aiohttp-3.10.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91aa966858593f64c8a65cdefa3d6dc8fe3c2768b159da84c1ddbbb2c01ab4ef"}, - {file = "aiohttp-3.10.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:63649309da83277f06a15bbdc2a54fbe75efb92caa2c25bb57ca37762789c746"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3e7fabedb3fe06933f47f1538df7b3a8d78e13d7167195f51ca47ee12690373"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c070430fda1a550a1c3a4c2d7281d3b8cfc0c6715f616e40e3332201a253067"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:51d0a4901b27272ae54e42067bc4b9a90e619a690b4dc43ea5950eb3070afc32"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fec5fac7aea6c060f317f07494961236434928e6f4374e170ef50b3001e14581"}, - {file = "aiohttp-3.10.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:172ad884bb61ad31ed7beed8be776eb17e7fb423f1c1be836d5cb357a096bf12"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d646fdd74c25bbdd4a055414f0fe32896c400f38ffbdfc78c68e62812a9e0257"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e86260b76786c28acf0b5fe31c8dca4c2add95098c709b11e8c35b424ebd4f5b"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d7cafc11d70fdd8801abfc2ff276744ae4cb39d8060b6b542c7e44e5f2cfc2"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:fc262c3df78c8ff6020c782d9ce02e4bcffe4900ad71c0ecdad59943cba54442"}, - {file = "aiohttp-3.10.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:482c85cf3d429844396d939b22bc2a03849cb9ad33344689ad1c85697bcba33a"}, - {file = "aiohttp-3.10.9-cp310-cp310-win32.whl", hash = "sha256:aeebd3061f6f1747c011e1d0b0b5f04f9f54ad1a2ca183e687e7277bef2e0da2"}, - {file = "aiohttp-3.10.9-cp310-cp310-win_amd64.whl", hash = "sha256:fa430b871220dc62572cef9c69b41e0d70fcb9d486a4a207a5de4c1f25d82593"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:16e6a51d8bc96b77f04a6764b4ad03eeef43baa32014fce71e882bd71302c7e4"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8bd9125dd0cc8ebd84bff2be64b10fdba7dc6fd7be431b5eaf67723557de3a31"}, - {file = "aiohttp-3.10.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dcf354661f54e6a49193d0b5653a1b011ba856e0b7a76bda2c33e4c6892f34ea"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42775de0ca04f90c10c5c46291535ec08e9bcc4756f1b48f02a0657febe89b10"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d1e4185c5d7187684d41ebb50c9aeaaaa06ca1875f4c57593071b0409d2444"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2695c61cf53a5d4345a43d689f37fc0f6d3a2dc520660aec27ec0f06288d1f9"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a3f063b41cc06e8d0b3fcbbfc9c05b7420f41287e0cd4f75ce0a1f3d80729e6"}, - {file = "aiohttp-3.10.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2d37f4718002863b82c6f391c8efd4d3a817da37030a29e2682a94d2716209de"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2746d8994ebca1bdc55a1e998feff4e94222da709623bb18f6e5cfec8ec01baf"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6f3c6648aa123bcd73d6f26607d59967b607b0da8ffcc27d418a4b59f4c98c7c"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:558b3d223fd631ad134d89adea876e7fdb4c93c849ef195049c063ada82b7d08"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4e6cb75f8ddd9c2132d00bc03c9716add57f4beff1263463724f6398b813e7eb"}, - {file = "aiohttp-3.10.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:608cecd8d58d285bfd52dbca5b6251ca8d6ea567022c8a0eaae03c2589cd9af9"}, - {file = "aiohttp-3.10.9-cp311-cp311-win32.whl", hash = "sha256:36d4fba838be5f083f5490ddd281813b44d69685db910907636bc5dca6322316"}, - {file = "aiohttp-3.10.9-cp311-cp311-win_amd64.whl", hash = "sha256:8be1a65487bdfc285bd5e9baf3208c2132ca92a9b4020e9f27df1b16fab998a9"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4fd16b30567c5b8e167923be6e027eeae0f20cf2b8a26b98a25115f28ad48ee0"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:40ff5b7660f903dc587ed36ef08a88d46840182d9d4b5694e7607877ced698a1"}, - {file = "aiohttp-3.10.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4edc3fd701e2b9a0d605a7b23d3de4ad23137d23fc0dbab726aa71d92f11aaaf"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e525b69ee8a92c146ae5b4da9ecd15e518df4d40003b01b454ad694a27f498b5"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5002a02c17fcfd796d20bac719981d2fca9c006aac0797eb8f430a58e9d12431"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd4ceeae2fb8cabdd1b71c82bfdd39662473d3433ec95b962200e9e752fb70d0"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6e395c3d1f773cf0651cd3559e25182eb0c03a2777b53b4575d8adc1149c6e9"}, - {file = "aiohttp-3.10.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbdb8def5268f3f9cd753a265756f49228a20ed14a480d151df727808b4531dd"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f82ace0ec57c94aaf5b0e118d4366cff5889097412c75aa14b4fd5fc0c44ee3e"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:6ebdc3b3714afe1b134b3bbeb5f745eed3ecbcff92ab25d80e4ef299e83a5465"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f9ca09414003c0e96a735daa1f071f7d7ed06962ef4fa29ceb6c80d06696d900"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1298b854fd31d0567cbb916091be9d3278168064fca88e70b8468875ef9ff7e7"}, - {file = "aiohttp-3.10.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:60ad5b8a7452c0f5645c73d4dad7490afd6119d453d302cd5b72b678a85d6044"}, - {file = "aiohttp-3.10.9-cp312-cp312-win32.whl", hash = "sha256:1a0ee6c0d590c917f1b9629371fce5f3d3f22c317aa96fbdcce3260754d7ea21"}, - {file = "aiohttp-3.10.9-cp312-cp312-win_amd64.whl", hash = "sha256:c46131c6112b534b178d4e002abe450a0a29840b61413ac25243f1291613806a"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2bd9f3eac515c16c4360a6a00c38119333901b8590fe93c3257a9b536026594d"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8cc0d13b4e3b1362d424ce3f4e8c79e1f7247a00d792823ffd640878abf28e56"}, - {file = "aiohttp-3.10.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ba1a599255ad6a41022e261e31bc2f6f9355a419575b391f9655c4d9e5df5ff5"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:776e9f3c9b377fcf097c4a04b241b15691e6662d850168642ff976780609303c"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8debb45545ad95b58cc16c3c1cc19ad82cffcb106db12b437885dbee265f0ab5"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2555e4949c8d8782f18ef20e9d39730d2656e218a6f1a21a4c4c0b56546a02e"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c54dc329cd44f7f7883a9f4baaefe686e8b9662e2c6c184ea15cceee587d8d69"}, - {file = "aiohttp-3.10.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e709d6ac598c5416f879bb1bae3fd751366120ac3fa235a01de763537385d036"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:17c272cfe7b07a5bb0c6ad3f234e0c336fb53f3bf17840f66bd77b5815ab3d16"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0c21c82df33b264216abffff9f8370f303dab65d8eee3767efbbd2734363f677"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9331dd34145ff105177855017920dde140b447049cd62bb589de320fd6ddd582"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ac3196952c673822ebed8871cf8802e17254fff2a2ed4835d9c045d9b88c5ec7"}, - {file = "aiohttp-3.10.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2c33fa6e10bb7ed262e3ff03cc69d52869514f16558db0626a7c5c61dde3c29f"}, - {file = "aiohttp-3.10.9-cp313-cp313-win32.whl", hash = "sha256:a14e4b672c257a6b94fe934ee62666bacbc8e45b7876f9dd9502d0f0fe69db16"}, - {file = "aiohttp-3.10.9-cp313-cp313-win_amd64.whl", hash = "sha256:a35ed3d03910785f7d9d6f5381f0c24002b2b888b298e6f941b2fc94c5055fcd"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5f392ef50e22c31fa49b5a46af7f983fa3f118f3eccb8522063bee8bfa6755f8"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d1f5c9169e26db6a61276008582d945405b8316aae2bb198220466e68114a0f5"}, - {file = "aiohttp-3.10.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9d10d10ec27c0d46ddaecc3c5598c4db9ce4e6398ca872cdde0525765caa2f"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d97273a52d7f89a75b11ec386f786d3da7723d7efae3034b4dda79f6f093edc1"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d271f770b52e32236d945911b2082f9318e90ff835d45224fa9e28374303f729"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7003f33f5f7da1eb02f0446b0f8d2ccf57d253ca6c2e7a5732d25889da82b517"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6e00c8a92e7663ed2be6fcc08a2997ff06ce73c8080cd0df10cc0321a3168d7"}, - {file = "aiohttp-3.10.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a61df62966ce6507aafab24e124e0c3a1cfbe23c59732987fc0fd0d71daa0b88"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:60555211a006d26e1a389222e3fab8cd379f28e0fbf7472ee55b16c6c529e3a6"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:d15a29424e96fad56dc2f3abed10a89c50c099f97d2416520c7a543e8fddf066"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:a19caae0d670771ea7854ca30df76f676eb47e0fd9b2ee4392d44708f272122d"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:99f9678bf0e2b1b695e8028fedac24ab6770937932eda695815d5a6618c37e04"}, - {file = "aiohttp-3.10.9-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:2914caa46054f3b5ff910468d686742ff8cff54b8a67319d75f5d5945fd0a13d"}, - {file = "aiohttp-3.10.9-cp38-cp38-win32.whl", hash = "sha256:0bc059ecbce835630e635879f5f480a742e130d9821fbe3d2f76610a6698ee25"}, - {file = "aiohttp-3.10.9-cp38-cp38-win_amd64.whl", hash = "sha256:e883b61b75ca6efc2541fcd52a5c8ccfe288b24d97e20ac08fdf343b8ac672ea"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fcd546782d03181b0b1d20b43d612429a90a68779659ba8045114b867971ab71"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:85711eec2d875cd88c7eb40e734c4ca6d9ae477d6f26bd2b5bb4f7f60e41b156"}, - {file = "aiohttp-3.10.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02d1d6610588bcd743fae827bd6f2e47e0d09b346f230824b4c6fb85c6065f9c"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3668d0c2a4d23fb136a753eba42caa2c0abbd3d9c5c87ee150a716a16c6deec1"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d7c071235a47d407b0e93aa6262b49422dbe48d7d8566e1158fecc91043dd948"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac74e794e3aee92ae8f571bfeaa103a141e409863a100ab63a253b1c53b707eb"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bbf94d4a0447705b7775417ca8bb8086cc5482023a6e17cdc8f96d0b1b5aba6"}, - {file = "aiohttp-3.10.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb0b2d5d51f96b6cc19e6ab46a7b684be23240426ae951dcdac9639ab111b45e"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:e83dfefb4f7d285c2d6a07a22268344a97d61579b3e0dce482a5be0251d672ab"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f0a44bb40b6aaa4fb9a5c1ee07880570ecda2065433a96ccff409c9c20c1624a"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c2b627d3c8982691b06d89d31093cee158c30629fdfebe705a91814d49b554f8"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:03690541e4cc866eef79626cfa1ef4dd729c5c1408600c8cb9e12e1137eed6ab"}, - {file = "aiohttp-3.10.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ad3675c126f2a95bde637d162f8231cff6bc0bc9fbe31bd78075f9ff7921e322"}, - {file = "aiohttp-3.10.9-cp39-cp39-win32.whl", hash = "sha256:1321658f12b6caffafdc35cfba6c882cb014af86bef4e78c125e7e794dfb927b"}, - {file = "aiohttp-3.10.9-cp39-cp39-win_amd64.whl", hash = "sha256:9fdf5c839bf95fc67be5794c780419edb0dbef776edcfc6c2e5e2ffd5ee755fa"}, - {file = "aiohttp-3.10.9.tar.gz", hash = "sha256:143b0026a9dab07a05ad2dd9e46aa859bffdd6348ddc5967b42161168c24f857"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9"}, + {file = "aiohttp-3.10.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026"}, + {file = "aiohttp-3.10.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc"}, + {file = "aiohttp-3.10.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68"}, + {file = "aiohttp-3.10.10-cp310-cp310-win32.whl", hash = "sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257"}, + {file = "aiohttp-3.10.10-cp310-cp310-win_amd64.whl", hash = "sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7"}, + {file = "aiohttp-3.10.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1"}, + {file = "aiohttp-3.10.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a"}, + {file = "aiohttp-3.10.10-cp311-cp311-win32.whl", hash = "sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94"}, + {file = "aiohttp-3.10.10-cp311-cp311-win_amd64.whl", hash = "sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28"}, + {file = "aiohttp-3.10.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16"}, + {file = "aiohttp-3.10.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a"}, + {file = "aiohttp-3.10.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205"}, + {file = "aiohttp-3.10.10-cp312-cp312-win32.whl", hash = "sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628"}, + {file = "aiohttp-3.10.10-cp312-cp312-win_amd64.whl", hash = "sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d"}, + {file = "aiohttp-3.10.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e"}, + {file = "aiohttp-3.10.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67"}, + {file = "aiohttp-3.10.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b"}, + {file = "aiohttp-3.10.10-cp313-cp313-win32.whl", hash = "sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8"}, + {file = "aiohttp-3.10.10-cp313-cp313-win_amd64.whl", hash = "sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1b66ccafef7336a1e1f0e389901f60c1d920102315a56df85e49552308fc0486"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:acd48d5b80ee80f9432a165c0ac8cbf9253eaddb6113269a5e18699b33958dbb"}, + {file = "aiohttp-3.10.10-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3455522392fb15ff549d92fbf4b73b559d5e43dc522588f7eb3e54c3f38beee7"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45c3b868724137f713a38376fef8120c166d1eadd50da1855c112fe97954aed8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:da1dee8948d2137bb51fbb8a53cce6b1bcc86003c6b42565f008438b806cccd8"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5ce2ce7c997e1971b7184ee37deb6ea9922ef5163c6ee5aa3c274b05f9e12fa"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28529e08fde6f12eba8677f5a8608500ed33c086f974de68cc65ab218713a59d"}, + {file = "aiohttp-3.10.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f7db54c7914cc99d901d93a34704833568d86c20925b2762f9fa779f9cd2e70f"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:03a42ac7895406220124c88911ebee31ba8b2d24c98507f4a8bf826b2937c7f2"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7e338c0523d024fad378b376a79faff37fafb3c001872a618cde1d322400a572"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:038f514fe39e235e9fef6717fbf944057bfa24f9b3db9ee551a7ecf584b5b480"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:64f6c17757251e2b8d885d728b6433d9d970573586a78b78ba8929b0f41d045a"}, + {file = "aiohttp-3.10.10-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:93429602396f3383a797a2a70e5f1de5df8e35535d7806c9f91df06f297e109b"}, + {file = "aiohttp-3.10.10-cp38-cp38-win32.whl", hash = "sha256:c823bc3971c44ab93e611ab1a46b1eafeae474c0c844aff4b7474287b75fe49c"}, + {file = "aiohttp-3.10.10-cp38-cp38-win_amd64.whl", hash = "sha256:54ca74df1be3c7ca1cf7f4c971c79c2daf48d9aa65dea1a662ae18926f5bc8ce"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:01948b1d570f83ee7bbf5a60ea2375a89dfb09fd419170e7f5af029510033d24"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9fc1500fd2a952c5c8e3b29aaf7e3cc6e27e9cfc0a8819b3bce48cc1b849e4cc"}, + {file = "aiohttp-3.10.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f614ab0c76397661b90b6851a030004dac502e48260ea10f2441abd2207fbcc7"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00819de9e45d42584bed046314c40ea7e9aea95411b38971082cad449392b08c"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05646ebe6b94cc93407b3bf34b9eb26c20722384d068eb7339de802154d61bc5"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:998f3bd3cfc95e9424a6acd7840cbdd39e45bc09ef87533c006f94ac47296090"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9010c31cd6fa59438da4e58a7f19e4753f7f264300cd152e7f90d4602449762"}, + {file = "aiohttp-3.10.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ea7ffc6d6d6f8a11e6f40091a1040995cdff02cfc9ba4c2f30a516cb2633554"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ef9c33cc5cbca35808f6c74be11eb7f5f6b14d2311be84a15b594bd3e58b5527"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ce0cdc074d540265bfeb31336e678b4e37316849d13b308607efa527e981f5c2"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:597a079284b7ee65ee102bc3a6ea226a37d2b96d0418cc9047490f231dc09fe8"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7789050d9e5d0c309c706953e5e8876e38662d57d45f936902e176d19f1c58ab"}, + {file = "aiohttp-3.10.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e7f8b04d83483577fd9200461b057c9f14ced334dcb053090cea1da9c8321a91"}, + {file = "aiohttp-3.10.10-cp39-cp39-win32.whl", hash = "sha256:c02a30b904282777d872266b87b20ed8cc0d1501855e27f831320f471d54d983"}, + {file = "aiohttp-3.10.10-cp39-cp39-win_amd64.whl", hash = "sha256:edfe3341033a6b53a5c522c802deb2079eee5cbfbb0af032a55064bd65c73a23"}, + {file = "aiohttp-3.10.10.tar.gz", hash = "sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a"}, ] [package.dependencies] @@ -150,13 +150,13 @@ files = [ [[package]] name = "anyio" -version = "4.6.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.6.0-py3-none-any.whl", hash = "sha256:c7d2e9d63e31599eeb636c8c5c03a7e108d73b345f064f1c19fdc87b79036a9a"}, - {file = "anyio-4.6.0.tar.gz", hash = "sha256:137b4559cbb034c477165047febb6ff83f390fc3b20bf181c1fc0a728cb8beeb"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -167,7 +167,7 @@ typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.21.0b1)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -267,17 +267,17 @@ files = [ [[package]] name = "boto3" -version = "1.35.37" +version = "1.35.54" description = "The AWS SDK for Python" optional = false python-versions = ">=3.8" files = [ - {file = "boto3-1.35.37-py3-none-any.whl", hash = "sha256:385ca77bf8ea4ab2d97f6e2435bdb29f77d9301e2f7ac796c2f465753c2adf3c"}, - {file = "boto3-1.35.37.tar.gz", hash = "sha256:470d981583885859fed2fd1c185eeb01cc03e60272d499bafe41b12625b158c8"}, + {file = "boto3-1.35.54-py3-none-any.whl", hash = "sha256:2d5e160b614db55fbee7981001c54476cb827c441cef65b2fcb2c52a62019909"}, + {file = "boto3-1.35.54.tar.gz", hash = "sha256:7d9c359bbbc858a60b51c86328db813353c8bd1940212cdbd0a7da835291c2e1"}, ] [package.dependencies] -botocore = ">=1.35.37,<1.36.0" +botocore = ">=1.35.54,<1.36.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.10.0,<0.11.0" @@ -286,13 +286,13 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.35.37" +version = "1.35.54" description = "Low-level, data-driven core of boto 3." optional = false python-versions = ">=3.8" files = [ - {file = "botocore-1.35.37-py3-none-any.whl", hash = "sha256:64f965d4ba7adb8d79ce044c3aef7356e05dd74753cf7e9115b80f477845d920"}, - {file = "botocore-1.35.37.tar.gz", hash = "sha256:b2b4d29bafd95b698344f2f0577bb67064adbf1735d8a0e3c7473daa59c23ba6"}, + {file = "botocore-1.35.54-py3-none-any.whl", hash = "sha256:9cca1811094b6cdc144c2c063a3ec2db6d7c88194b04d4277cd34fc8e3473aff"}, + {file = "botocore-1.35.54.tar.gz", hash = "sha256:131bb59ce59c8a939b31e8e647242d70cf11d32d4529fa4dca01feea1e891a76"}, ] [package.dependencies] @@ -509,13 +509,13 @@ files = [ [[package]] name = "colorlog" -version = "6.8.2" +version = "6.9.0" description = "Add colours to the output of Python's logging module." optional = false python-versions = ">=3.6" files = [ - {file = "colorlog-6.8.2-py3-none-any.whl", hash = "sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33"}, - {file = "colorlog-6.8.2.tar.gz", hash = "sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44"}, + {file = "colorlog-6.9.0-py3-none-any.whl", hash = "sha256:5906e71acd67cb07a71e779c47c4bcb45fb8c2993eebe9e5adcd6a6f1b283eff"}, + {file = "colorlog-6.9.0.tar.gz", hash = "sha256:bfba54a1b93b94f54e1f4fe48395725a3d92fd2a4af702f6bd70946bdc0c6ac2"}, ] [package.dependencies] @@ -526,73 +526,73 @@ development = ["black", "flake8", "mypy", "pytest", "types-colorama"] [[package]] name = "coverage" -version = "7.6.2" +version = "7.6.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.9" files = [ - {file = "coverage-7.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9df1950fb92d49970cce38100d7e7293c84ed3606eaa16ea0b6bc27175bb667"}, - {file = "coverage-7.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:24500f4b0e03aab60ce575c85365beab64b44d4db837021e08339f61d1fbfe52"}, - {file = "coverage-7.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a663b180b6669c400b4630a24cc776f23a992d38ce7ae72ede2a397ce6b0f170"}, - {file = "coverage-7.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfde025e2793a22efe8c21f807d276bd1d6a4bcc5ba6f19dbdfc4e7a12160909"}, - {file = "coverage-7.6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:087932079c065d7b8ebadd3a0160656c55954144af6439886c8bcf78bbbcde7f"}, - {file = "coverage-7.6.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9c6b0c1cafd96213a0327cf680acb39f70e452caf8e9a25aeb05316db9c07f89"}, - {file = "coverage-7.6.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6e85830eed5b5263ffa0c62428e43cb844296f3b4461f09e4bdb0d44ec190bc2"}, - {file = "coverage-7.6.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:62ab4231c01e156ece1b3a187c87173f31cbeee83a5e1f6dff17f288dca93345"}, - {file = "coverage-7.6.2-cp310-cp310-win32.whl", hash = "sha256:7b80fbb0da3aebde102a37ef0138aeedff45997e22f8962e5f16ae1742852676"}, - {file = "coverage-7.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:d20c3d1f31f14d6962a4e2f549c21d31e670b90f777ef4171be540fb7fb70f02"}, - {file = "coverage-7.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bb21bac7783c1bf6f4bbe68b1e0ff0d20e7e7732cfb7995bc8d96e23aa90fc7b"}, - {file = "coverage-7.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a7b2e437fbd8fae5bc7716b9c7ff97aecc95f0b4d56e4ca08b3c8d8adcaadb84"}, - {file = "coverage-7.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:536f77f2bf5797983652d1d55f1a7272a29afcc89e3ae51caa99b2db4e89d658"}, - {file = "coverage-7.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f361296ca7054f0936b02525646b2731b32c8074ba6defab524b79b2b7eeac72"}, - {file = "coverage-7.6.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7926d8d034e06b479797c199747dd774d5e86179f2ce44294423327a88d66ca7"}, - {file = "coverage-7.6.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0bbae11c138585c89fb4e991faefb174a80112e1a7557d507aaa07675c62e66b"}, - {file = "coverage-7.6.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:fcad7d5d2bbfeae1026b395036a8aa5abf67e8038ae7e6a25c7d0f88b10a8e6a"}, - {file = "coverage-7.6.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f01e53575f27097d75d42de33b1b289c74b16891ce576d767ad8c48d17aeb5e0"}, - {file = "coverage-7.6.2-cp311-cp311-win32.whl", hash = "sha256:7781f4f70c9b0b39e1b129b10c7d43a4e0c91f90c60435e6da8288efc2b73438"}, - {file = "coverage-7.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:9bcd51eeca35a80e76dc5794a9dd7cb04b97f0e8af620d54711793bfc1fbba4b"}, - {file = "coverage-7.6.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ebc94fadbd4a3f4215993326a6a00e47d79889391f5659bf310f55fe5d9f581c"}, - {file = "coverage-7.6.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9681516288e3dcf0aa7c26231178cc0be6cac9705cac06709f2353c5b406cfea"}, - {file = "coverage-7.6.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d9c5d13927d77af4fbe453953810db766f75401e764727e73a6ee4f82527b3e"}, - {file = "coverage-7.6.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b92f9ca04b3e719d69b02dc4a69debb795af84cb7afd09c5eb5d54b4a1ae2191"}, - {file = "coverage-7.6.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ff2ef83d6d0b527b5c9dad73819b24a2f76fdddcfd6c4e7a4d7e73ecb0656b4"}, - {file = "coverage-7.6.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:47ccb6e99a3031ffbbd6e7cc041e70770b4fe405370c66a54dbf26a500ded80b"}, - {file = "coverage-7.6.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a867d26f06bcd047ef716175b2696b315cb7571ccb951006d61ca80bbc356e9e"}, - {file = "coverage-7.6.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:cdfcf2e914e2ba653101157458afd0ad92a16731eeba9a611b5cbb3e7124e74b"}, - {file = "coverage-7.6.2-cp312-cp312-win32.whl", hash = "sha256:f9035695dadfb397bee9eeaf1dc7fbeda483bf7664a7397a629846800ce6e276"}, - {file = "coverage-7.6.2-cp312-cp312-win_amd64.whl", hash = "sha256:5ed69befa9a9fc796fe015a7040c9398722d6b97df73a6b608e9e275fa0932b0"}, - {file = "coverage-7.6.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4eea60c79d36a8f39475b1af887663bc3ae4f31289cd216f514ce18d5938df40"}, - {file = "coverage-7.6.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aa68a6cdbe1bc6793a9dbfc38302c11599bbe1837392ae9b1d238b9ef3dafcf1"}, - {file = "coverage-7.6.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec528ae69f0a139690fad6deac8a7d33629fa61ccce693fdd07ddf7e9931fba"}, - {file = "coverage-7.6.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed5ac02126f74d190fa2cc14a9eb2a5d9837d5863920fa472b02eb1595cdc925"}, - {file = "coverage-7.6.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21c0ea0d4db8a36b275cb6fb2437a3715697a4ba3cb7b918d3525cc75f726304"}, - {file = "coverage-7.6.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:35a51598f29b2a19e26d0908bd196f771a9b1c5d9a07bf20be0adf28f1ad4f77"}, - {file = "coverage-7.6.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c9192925acc33e146864b8cf037e2ed32a91fdf7644ae875f5d46cd2ef086a5f"}, - {file = "coverage-7.6.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bf4eeecc9e10f5403ec06138978235af79c9a79af494eb6b1d60a50b49ed2869"}, - {file = "coverage-7.6.2-cp313-cp313-win32.whl", hash = "sha256:e4ee15b267d2dad3e8759ca441ad450c334f3733304c55210c2a44516e8d5530"}, - {file = "coverage-7.6.2-cp313-cp313-win_amd64.whl", hash = "sha256:c71965d1ced48bf97aab79fad56df82c566b4c498ffc09c2094605727c4b7e36"}, - {file = "coverage-7.6.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7571e8bbecc6ac066256f9de40365ff833553e2e0c0c004f4482facb131820ef"}, - {file = "coverage-7.6.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:078a87519057dacb5d77e333f740708ec2a8f768655f1db07f8dfd28d7a005f0"}, - {file = "coverage-7.6.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e5e92e3e84a8718d2de36cd8387459cba9a4508337b8c5f450ce42b87a9e760"}, - {file = "coverage-7.6.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ebabdf1c76593a09ee18c1a06cd3022919861365219ea3aca0247ededf6facd6"}, - {file = "coverage-7.6.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12179eb0575b8900912711688e45474f04ab3934aaa7b624dea7b3c511ecc90f"}, - {file = "coverage-7.6.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:39d3b964abfe1519b9d313ab28abf1d02faea26cd14b27f5283849bf59479ff5"}, - {file = "coverage-7.6.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:84c4315577f7cd511d6250ffd0f695c825efe729f4205c0340f7004eda51191f"}, - {file = "coverage-7.6.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ff797320dcbff57caa6b2301c3913784a010e13b1f6cf4ab3f563f3c5e7919db"}, - {file = "coverage-7.6.2-cp313-cp313t-win32.whl", hash = "sha256:2b636a301e53964550e2f3094484fa5a96e699db318d65398cfba438c5c92171"}, - {file = "coverage-7.6.2-cp313-cp313t-win_amd64.whl", hash = "sha256:d03a060ac1a08e10589c27d509bbdb35b65f2d7f3f8d81cf2fa199877c7bc58a"}, - {file = "coverage-7.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c37faddc8acd826cfc5e2392531aba734b229741d3daec7f4c777a8f0d4993e5"}, - {file = "coverage-7.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ab31fdd643f162c467cfe6a86e9cb5f1965b632e5e65c072d90854ff486d02cf"}, - {file = "coverage-7.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97df87e1a20deb75ac7d920c812e9326096aa00a9a4b6d07679b4f1f14b06c90"}, - {file = "coverage-7.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:343056c5e0737487a5291f5691f4dfeb25b3e3c8699b4d36b92bb0e586219d14"}, - {file = "coverage-7.6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4ef1c56b47b6b9024b939d503ab487231df1f722065a48f4fc61832130b90e"}, - {file = "coverage-7.6.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7fca4a92c8a7a73dee6946471bce6d1443d94155694b893b79e19ca2a540d86e"}, - {file = "coverage-7.6.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69f251804e052fc46d29d0e7348cdc5fcbfc4861dc4a1ebedef7e78d241ad39e"}, - {file = "coverage-7.6.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e8ea055b3ea046c0f66217af65bc193bbbeca1c8661dc5fd42698db5795d2627"}, - {file = "coverage-7.6.2-cp39-cp39-win32.whl", hash = "sha256:6c2ba1e0c24d8fae8f2cf0aeb2fc0a2a7f69b6d20bd8d3749fd6b36ecef5edf0"}, - {file = "coverage-7.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:2186369a654a15628e9c1c9921409a6b3eda833e4b91f3ca2a7d9f77abb4987c"}, - {file = "coverage-7.6.2-pp39.pp310-none-any.whl", hash = "sha256:667952739daafe9616db19fbedbdb87917eee253ac4f31d70c7587f7ab531b4e"}, - {file = "coverage-7.6.2.tar.gz", hash = "sha256:a5f81e68aa62bc0cfca04f7b19eaa8f9c826b53fc82ab9e2121976dc74f131f3"}, + {file = "coverage-7.6.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07"}, + {file = "coverage-7.6.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51"}, + {file = "coverage-7.6.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea"}, + {file = "coverage-7.6.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a"}, + {file = "coverage-7.6.4-cp310-cp310-win32.whl", hash = "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa"}, + {file = "coverage-7.6.4-cp310-cp310-win_amd64.whl", hash = "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b"}, + {file = "coverage-7.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b"}, + {file = "coverage-7.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db"}, + {file = "coverage-7.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522"}, + {file = "coverage-7.6.4-cp311-cp311-win32.whl", hash = "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf"}, + {file = "coverage-7.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2"}, + {file = "coverage-7.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27"}, + {file = "coverage-7.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1"}, + {file = "coverage-7.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5"}, + {file = "coverage-7.6.4-cp312-cp312-win32.whl", hash = "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17"}, + {file = "coverage-7.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9"}, + {file = "coverage-7.6.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06"}, + {file = "coverage-7.6.4-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21"}, + {file = "coverage-7.6.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a"}, + {file = "coverage-7.6.4-cp313-cp313-win32.whl", hash = "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e"}, + {file = "coverage-7.6.4-cp313-cp313-win_amd64.whl", hash = "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f"}, + {file = "coverage-7.6.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3"}, + {file = "coverage-7.6.4-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70"}, + {file = "coverage-7.6.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef"}, + {file = "coverage-7.6.4-cp313-cp313t-win32.whl", hash = "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e"}, + {file = "coverage-7.6.4-cp313-cp313t-win_amd64.whl", hash = "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3"}, + {file = "coverage-7.6.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376"}, + {file = "coverage-7.6.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111"}, + {file = "coverage-7.6.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901"}, + {file = "coverage-7.6.4-cp39-cp39-win32.whl", hash = "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09"}, + {file = "coverage-7.6.4-cp39-cp39-win_amd64.whl", hash = "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f"}, + {file = "coverage-7.6.4-pp39.pp310-none-any.whl", hash = "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e"}, + {file = "coverage-7.6.4.tar.gz", hash = "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73"}, ] [package.extras] @@ -715,18 +715,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.115.0" +version = "0.115.4" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.115.0-py3-none-any.whl", hash = "sha256:17ea427674467486e997206a5ab25760f6b09e069f099b96f5b55a32fb6f1631"}, - {file = "fastapi-0.115.0.tar.gz", hash = "sha256:f93b4ca3529a8ebc6fc3fcf710e5efa8de3df9b41570958abf1d97d843138004"}, + {file = "fastapi-0.115.4-py3-none-any.whl", hash = "sha256:0b504a063ffb3cf96a5e27dc1bc32c80ca743a2528574f9cdc77daa2d31b4742"}, + {file = "fastapi-0.115.4.tar.gz", hash = "sha256:db653475586b091cb8b2fec2ac54a680ac6a158e07406e1abae31679e8826349"}, ] [package.dependencies] pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" -starlette = ">=0.37.2,<0.39.0" +starlette = ">=0.40.0,<0.42.0" typing-extensions = ">=4.8.0" [package.extras] @@ -762,99 +762,114 @@ files = [ [[package]] name = "frozenlist" -version = "1.4.1" +version = "1.5.0" description = "A list-like structure which implements collections.abc.MutableSequence" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, - {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, - {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, - {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, - {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, - {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, - {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, - {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, - {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, - {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, - {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, - {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, - {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, - {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, - {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, - {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, - {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, - {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, - {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, - {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, - {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, - {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, - {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, - {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, - {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, - {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, - {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, - {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb"}, + {file = "frozenlist-1.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba"}, + {file = "frozenlist-1.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab"}, + {file = "frozenlist-1.5.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5"}, + {file = "frozenlist-1.5.0-cp310-cp310-win32.whl", hash = "sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb"}, + {file = "frozenlist-1.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5"}, + {file = "frozenlist-1.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45"}, + {file = "frozenlist-1.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2"}, + {file = "frozenlist-1.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf"}, + {file = "frozenlist-1.5.0-cp311-cp311-win32.whl", hash = "sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942"}, + {file = "frozenlist-1.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d"}, + {file = "frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6"}, + {file = "frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631"}, + {file = "frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f"}, + {file = "frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8"}, + {file = "frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0"}, + {file = "frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840"}, + {file = "frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9"}, + {file = "frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03"}, + {file = "frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c"}, + {file = "frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9"}, + {file = "frozenlist-1.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf"}, + {file = "frozenlist-1.5.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e"}, + {file = "frozenlist-1.5.0-cp38-cp38-win32.whl", hash = "sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723"}, + {file = "frozenlist-1.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336"}, + {file = "frozenlist-1.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08"}, + {file = "frozenlist-1.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0"}, + {file = "frozenlist-1.5.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c"}, + {file = "frozenlist-1.5.0-cp39-cp39-win32.whl", hash = "sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3"}, + {file = "frozenlist-1.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0"}, + {file = "frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3"}, + {file = "frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817"}, ] [[package]] name = "google-api-core" -version = "2.21.0" +version = "2.22.0" description = "Google API client core library" optional = false python-versions = ">=3.7" files = [ - {file = "google_api_core-2.21.0-py3-none-any.whl", hash = "sha256:6869eacb2a37720380ba5898312af79a4d30b8bca1548fb4093e0697dc4bdf5d"}, - {file = "google_api_core-2.21.0.tar.gz", hash = "sha256:4a152fd11a9f774ea606388d423b68aa7e6d6a0ffe4c8266f74979613ec09f81"}, + {file = "google_api_core-2.22.0-py3-none-any.whl", hash = "sha256:a6652b6bd51303902494998626653671703c420f6f4c88cfd3f50ed723e9d021"}, + {file = "google_api_core-2.22.0.tar.gz", hash = "sha256:26f8d76b96477db42b55fd02a33aae4a42ec8b86b98b94969b7333a2c828bf35"}, ] [package.dependencies] @@ -868,7 +883,10 @@ grpcio-status = [ {version = ">=1.49.1,<2.0.dev0", optional = true, markers = "python_version >= \"3.11\" and extra == \"grpc\""}, {version = ">=1.33.2,<2.0.dev0", optional = true, markers = "python_version < \"3.11\" and extra == \"grpc\""}, ] -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = [ + {version = ">=1.22.3,<2.0.0dev", markers = "python_version < \"3.13\""}, + {version = ">=1.25.0,<2.0.0dev", markers = "python_version >= \"3.13\""}, +] protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0" requests = ">=2.18.0,<3.0.0.dev0" @@ -903,20 +921,23 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] [[package]] name = "google-cloud-secret-manager" -version = "2.20.2" +version = "2.21.0" description = "Google Cloud Secret Manager API client library" optional = false python-versions = ">=3.7" files = [ - {file = "google_cloud_secret_manager-2.20.2-py2.py3-none-any.whl", hash = "sha256:99b342ff722feef78aa5bad1c05c6be204f8fee01373a2eb6f05dba710b32879"}, - {file = "google_cloud_secret_manager-2.20.2.tar.gz", hash = "sha256:bbe24825e334f9e679e825e70d932118a7ff536e67c1ceb048da44111c87a45c"}, + {file = "google_cloud_secret_manager-2.21.0-py2.py3-none-any.whl", hash = "sha256:b7fed5c2f3be5e10d94053ea3a7c6a7c5813d38da39c678ef6c1137d6e25a310"}, + {file = "google_cloud_secret_manager-2.21.0.tar.gz", hash = "sha256:d1ae84ecf98cfc319c9a3f1012355cebd19317b662cc9dff1a2c36234580807b"}, ] [package.dependencies] google-api-core = {version = ">=1.34.1,<2.0.dev0 || >=2.11.dev0,<3.0.0dev", extras = ["grpc"]} google-auth = ">=2.14.1,<2.24.0 || >2.24.0,<2.25.0 || >2.25.0,<3.0.0dev" grpc-google-iam-v1 = ">=0.12.4,<1.0.0dev" -proto-plus = ">=1.22.3,<2.0.0dev" +proto-plus = [ + {version = ">=1.22.3,<2.0.0dev", markers = "python_version < \"3.13\""}, + {version = ">=1.25.0,<2.0.0dev", markers = "python_version >= \"3.13\""}, +] protobuf = ">=3.20.2,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0dev" [[package]] @@ -1041,85 +1062,85 @@ protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4 [[package]] name = "grpcio" -version = "1.66.2" +version = "1.67.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio-1.66.2-cp310-cp310-linux_armv7l.whl", hash = "sha256:fe96281713168a3270878255983d2cb1a97e034325c8c2c25169a69289d3ecfa"}, - {file = "grpcio-1.66.2-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:73fc8f8b9b5c4a03e802b3cd0c18b2b06b410d3c1dcbef989fdeb943bd44aff7"}, - {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:03b0b307ba26fae695e067b94cbb014e27390f8bc5ac7a3a39b7723fed085604"}, - {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d69ce1f324dc2d71e40c9261d3fdbe7d4c9d60f332069ff9b2a4d8a257c7b2b"}, - {file = "grpcio-1.66.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05bc2ceadc2529ab0b227b1310d249d95d9001cd106aa4d31e8871ad3c428d73"}, - {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ac475e8da31484efa25abb774674d837b343afb78bb3bcdef10f81a93e3d6bf"}, - {file = "grpcio-1.66.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0be4e0490c28da5377283861bed2941d1d20ec017ca397a5df4394d1c31a9b50"}, - {file = "grpcio-1.66.2-cp310-cp310-win32.whl", hash = "sha256:4e504572433f4e72b12394977679161d495c4c9581ba34a88d843eaf0f2fbd39"}, - {file = "grpcio-1.66.2-cp310-cp310-win_amd64.whl", hash = "sha256:2018b053aa15782db2541ca01a7edb56a0bf18c77efed975392583725974b249"}, - {file = "grpcio-1.66.2-cp311-cp311-linux_armv7l.whl", hash = "sha256:2335c58560a9e92ac58ff2bc5649952f9b37d0735608242973c7a8b94a6437d8"}, - {file = "grpcio-1.66.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45a3d462826f4868b442a6b8fdbe8b87b45eb4f5b5308168c156b21eca43f61c"}, - {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:a9539f01cb04950fd4b5ab458e64a15f84c2acc273670072abe49a3f29bbad54"}, - {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce89f5876662f146d4c1f695dda29d4433a5d01c8681fbd2539afff535da14d4"}, - {file = "grpcio-1.66.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d25a14af966438cddf498b2e338f88d1c9706f3493b1d73b93f695c99c5f0e2a"}, - {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6001e575b8bbd89eee11960bb640b6da6ae110cf08113a075f1e2051cc596cae"}, - {file = "grpcio-1.66.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4ea1d062c9230278793820146c95d038dc0f468cbdd172eec3363e42ff1c7d01"}, - {file = "grpcio-1.66.2-cp311-cp311-win32.whl", hash = "sha256:38b68498ff579a3b1ee8f93a05eb48dc2595795f2f62716e797dc24774c1aaa8"}, - {file = "grpcio-1.66.2-cp311-cp311-win_amd64.whl", hash = "sha256:6851de821249340bdb100df5eacfecfc4e6075fa85c6df7ee0eb213170ec8e5d"}, - {file = "grpcio-1.66.2-cp312-cp312-linux_armv7l.whl", hash = "sha256:802d84fd3d50614170649853d121baaaa305de7b65b3e01759247e768d691ddf"}, - {file = "grpcio-1.66.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:80fd702ba7e432994df208f27514280b4b5c6843e12a48759c9255679ad38db8"}, - {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:12fda97ffae55e6526825daf25ad0fa37483685952b5d0f910d6405c87e3adb6"}, - {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:950da58d7d80abd0ea68757769c9db0a95b31163e53e5bb60438d263f4bed7b7"}, - {file = "grpcio-1.66.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e636ce23273683b00410f1971d209bf3689238cf5538d960adc3cdfe80dd0dbd"}, - {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a917d26e0fe980b0ac7bfcc1a3c4ad6a9a4612c911d33efb55ed7833c749b0ee"}, - {file = "grpcio-1.66.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:49f0ca7ae850f59f828a723a9064cadbed90f1ece179d375966546499b8a2c9c"}, - {file = "grpcio-1.66.2-cp312-cp312-win32.whl", hash = "sha256:31fd163105464797a72d901a06472860845ac157389e10f12631025b3e4d0453"}, - {file = "grpcio-1.66.2-cp312-cp312-win_amd64.whl", hash = "sha256:ff1f7882e56c40b0d33c4922c15dfa30612f05fb785074a012f7cda74d1c3679"}, - {file = "grpcio-1.66.2-cp313-cp313-linux_armv7l.whl", hash = "sha256:3b00efc473b20d8bf83e0e1ae661b98951ca56111feb9b9611df8efc4fe5d55d"}, - {file = "grpcio-1.66.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1caa38fb22a8578ab8393da99d4b8641e3a80abc8fd52646f1ecc92bcb8dee34"}, - {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:c408f5ef75cfffa113cacd8b0c0e3611cbfd47701ca3cdc090594109b9fcbaed"}, - {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c806852deaedee9ce8280fe98955c9103f62912a5b2d5ee7e3eaa284a6d8d8e7"}, - {file = "grpcio-1.66.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f145cc21836c332c67baa6fc81099d1d27e266401565bf481948010d6ea32d46"}, - {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:73e3b425c1e155730273f73e419de3074aa5c5e936771ee0e4af0814631fb30a"}, - {file = "grpcio-1.66.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:9c509a4f78114cbc5f0740eb3d7a74985fd2eff022971bc9bc31f8bc93e66a3b"}, - {file = "grpcio-1.66.2-cp313-cp313-win32.whl", hash = "sha256:20657d6b8cfed7db5e11b62ff7dfe2e12064ea78e93f1434d61888834bc86d75"}, - {file = "grpcio-1.66.2-cp313-cp313-win_amd64.whl", hash = "sha256:fb70487c95786e345af5e854ffec8cb8cc781bcc5df7930c4fbb7feaa72e1cdf"}, - {file = "grpcio-1.66.2-cp38-cp38-linux_armv7l.whl", hash = "sha256:a18e20d8321c6400185b4263e27982488cb5cdd62da69147087a76a24ef4e7e3"}, - {file = "grpcio-1.66.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:02697eb4a5cbe5a9639f57323b4c37bcb3ab2d48cec5da3dc2f13334d72790dd"}, - {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:99a641995a6bc4287a6315989ee591ff58507aa1cbe4c2e70d88411c4dcc0839"}, - {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ed71e81782966ffead60268bbda31ea3f725ebf8aa73634d5dda44f2cf3fb9c"}, - {file = "grpcio-1.66.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbd27c24a4cc5e195a7f56cfd9312e366d5d61b86e36d46bbe538457ea6eb8dd"}, - {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a9724a156c8ec6a379869b23ba3323b7ea3600851c91489b871e375f710bc8"}, - {file = "grpcio-1.66.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d8d4732cc5052e92cea2f78b233c2e2a52998ac40cd651f40e398893ad0d06ec"}, - {file = "grpcio-1.66.2-cp38-cp38-win32.whl", hash = "sha256:7b2c86457145ce14c38e5bf6bdc19ef88e66c5fee2c3d83285c5aef026ba93b3"}, - {file = "grpcio-1.66.2-cp38-cp38-win_amd64.whl", hash = "sha256:e88264caad6d8d00e7913996030bac8ad5f26b7411495848cc218bd3a9040b6c"}, - {file = "grpcio-1.66.2-cp39-cp39-linux_armv7l.whl", hash = "sha256:c400ba5675b67025c8a9f48aa846f12a39cf0c44df5cd060e23fda5b30e9359d"}, - {file = "grpcio-1.66.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:66a0cd8ba6512b401d7ed46bb03f4ee455839957f28b8d61e7708056a806ba6a"}, - {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:06de8ec0bd71be123eec15b0e0d457474931c2c407869b6c349bd9bed4adbac3"}, - {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb57870449dfcfac428afbb5a877829fcb0d6db9d9baa1148705739e9083880e"}, - {file = "grpcio-1.66.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b672abf90a964bfde2d0ecbce30f2329a47498ba75ce6f4da35a2f4532b7acbc"}, - {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ad2efdbe90c73b0434cbe64ed372e12414ad03c06262279b104a029d1889d13e"}, - {file = "grpcio-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9c3a99c519f4638e700e9e3f83952e27e2ea10873eecd7935823dab0c1c9250e"}, - {file = "grpcio-1.66.2-cp39-cp39-win32.whl", hash = "sha256:78fa51ebc2d9242c0fc5db0feecc57a9943303b46664ad89921f5079e2e4ada7"}, - {file = "grpcio-1.66.2-cp39-cp39-win_amd64.whl", hash = "sha256:728bdf36a186e7f51da73be7f8d09457a03061be848718d0edf000e709418987"}, - {file = "grpcio-1.66.2.tar.gz", hash = "sha256:563588c587b75c34b928bc428548e5b00ea38c46972181a4d8b75ba7e3f24231"}, -] - -[package.extras] -protobuf = ["grpcio-tools (>=1.66.2)"] + {file = "grpcio-1.67.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:8b0341d66a57f8a3119b77ab32207072be60c9bf79760fa609c5609f2deb1f3f"}, + {file = "grpcio-1.67.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:f5a27dddefe0e2357d3e617b9079b4bfdc91341a91565111a21ed6ebbc51b22d"}, + {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:43112046864317498a33bdc4797ae6a268c36345a910de9b9c17159d8346602f"}, + {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9b929f13677b10f63124c1a410994a401cdd85214ad83ab67cc077fc7e480f0"}, + {file = "grpcio-1.67.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7d1797a8a3845437d327145959a2c0c47c05947c9eef5ff1a4c80e499dcc6fa"}, + {file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0489063974d1452436139501bf6b180f63d4977223ee87488fe36858c5725292"}, + {file = "grpcio-1.67.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9fd042de4a82e3e7aca44008ee2fb5da01b3e5adb316348c21980f7f58adc311"}, + {file = "grpcio-1.67.1-cp310-cp310-win32.whl", hash = "sha256:638354e698fd0c6c76b04540a850bf1db27b4d2515a19fcd5cf645c48d3eb1ed"}, + {file = "grpcio-1.67.1-cp310-cp310-win_amd64.whl", hash = "sha256:608d87d1bdabf9e2868b12338cd38a79969eaf920c89d698ead08f48de9c0f9e"}, + {file = "grpcio-1.67.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:7818c0454027ae3384235a65210bbf5464bd715450e30a3d40385453a85a70cb"}, + {file = "grpcio-1.67.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ea33986b70f83844cd00814cee4451055cd8cab36f00ac64a31f5bb09b31919e"}, + {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:c7a01337407dd89005527623a4a72c5c8e2894d22bead0895306b23c6695698f"}, + {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b866f73224b0634f4312a4674c1be21b2b4afa73cb20953cbbb73a6b36c3cc"}, + {file = "grpcio-1.67.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9fff78ba10d4250bfc07a01bd6254a6d87dc67f9627adece85c0b2ed754fa96"}, + {file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8a23cbcc5bb11ea7dc6163078be36c065db68d915c24f5faa4f872c573bb400f"}, + {file = "grpcio-1.67.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1a65b503d008f066e994f34f456e0647e5ceb34cfcec5ad180b1b44020ad4970"}, + {file = "grpcio-1.67.1-cp311-cp311-win32.whl", hash = "sha256:e29ca27bec8e163dca0c98084040edec3bc49afd10f18b412f483cc68c712744"}, + {file = "grpcio-1.67.1-cp311-cp311-win_amd64.whl", hash = "sha256:786a5b18544622bfb1e25cc08402bd44ea83edfb04b93798d85dca4d1a0b5be5"}, + {file = "grpcio-1.67.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:267d1745894200e4c604958da5f856da6293f063327cb049a51fe67348e4f953"}, + {file = "grpcio-1.67.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:85f69fdc1d28ce7cff8de3f9c67db2b0ca9ba4449644488c1e0303c146135ddb"}, + {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:f26b0b547eb8d00e195274cdfc63ce64c8fc2d3e2d00b12bf468ece41a0423a0"}, + {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4422581cdc628f77302270ff839a44f4c24fdc57887dc2a45b7e53d8fc2376af"}, + {file = "grpcio-1.67.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d7616d2ded471231c701489190379e0c311ee0a6c756f3c03e6a62b95a7146e"}, + {file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8a00efecde9d6fcc3ab00c13f816313c040a28450e5e25739c24f432fc6d3c75"}, + {file = "grpcio-1.67.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:699e964923b70f3101393710793289e42845791ea07565654ada0969522d0a38"}, + {file = "grpcio-1.67.1-cp312-cp312-win32.whl", hash = "sha256:4e7b904484a634a0fff132958dabdb10d63e0927398273917da3ee103e8d1f78"}, + {file = "grpcio-1.67.1-cp312-cp312-win_amd64.whl", hash = "sha256:5721e66a594a6c4204458004852719b38f3d5522082be9061d6510b455c90afc"}, + {file = "grpcio-1.67.1-cp313-cp313-linux_armv7l.whl", hash = "sha256:aa0162e56fd10a5547fac8774c4899fc3e18c1aa4a4759d0ce2cd00d3696ea6b"}, + {file = "grpcio-1.67.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:beee96c8c0b1a75d556fe57b92b58b4347c77a65781ee2ac749d550f2a365dc1"}, + {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_aarch64.whl", hash = "sha256:a93deda571a1bf94ec1f6fcda2872dad3ae538700d94dc283c672a3b508ba3af"}, + {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e6f255980afef598a9e64a24efce87b625e3e3c80a45162d111a461a9f92955"}, + {file = "grpcio-1.67.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e838cad2176ebd5d4a8bb03955138d6589ce9e2ce5d51c3ada34396dbd2dba8"}, + {file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a6703916c43b1d468d0756c8077b12017a9fcb6a1ef13faf49e67d20d7ebda62"}, + {file = "grpcio-1.67.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:917e8d8994eed1d86b907ba2a61b9f0aef27a2155bca6cbb322430fc7135b7bb"}, + {file = "grpcio-1.67.1-cp313-cp313-win32.whl", hash = "sha256:e279330bef1744040db8fc432becc8a727b84f456ab62b744d3fdb83f327e121"}, + {file = "grpcio-1.67.1-cp313-cp313-win_amd64.whl", hash = "sha256:fa0c739ad8b1996bd24823950e3cb5152ae91fca1c09cc791190bf1627ffefba"}, + {file = "grpcio-1.67.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:178f5db771c4f9a9facb2ab37a434c46cb9be1a75e820f187ee3d1e7805c4f65"}, + {file = "grpcio-1.67.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0f3e49c738396e93b7ba9016e153eb09e0778e776df6090c1b8c91877cc1c426"}, + {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:24e8a26dbfc5274d7474c27759b54486b8de23c709d76695237515bc8b5baeab"}, + {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b6c16489326d79ead41689c4b84bc40d522c9a7617219f4ad94bc7f448c5085"}, + {file = "grpcio-1.67.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e6a4dcf5af7bbc36fd9f81c9f372e8ae580870a9e4b6eafe948cd334b81cf3"}, + {file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:95b5f2b857856ed78d72da93cd7d09b6db8ef30102e5e7fe0961fe4d9f7d48e8"}, + {file = "grpcio-1.67.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b49359977c6ec9f5d0573ea4e0071ad278ef905aa74e420acc73fd28ce39e9ce"}, + {file = "grpcio-1.67.1-cp38-cp38-win32.whl", hash = "sha256:f5b76ff64aaac53fede0cc93abf57894ab2a7362986ba22243d06218b93efe46"}, + {file = "grpcio-1.67.1-cp38-cp38-win_amd64.whl", hash = "sha256:804c6457c3cd3ec04fe6006c739579b8d35c86ae3298ffca8de57b493524b771"}, + {file = "grpcio-1.67.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:a25bdea92b13ff4d7790962190bf6bf5c4639876e01c0f3dda70fc2769616335"}, + {file = "grpcio-1.67.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cdc491ae35a13535fd9196acb5afe1af37c8237df2e54427be3eecda3653127e"}, + {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:85f862069b86a305497e74d0dc43c02de3d1d184fc2c180993aa8aa86fbd19b8"}, + {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec74ef02010186185de82cc594058a3ccd8d86821842bbac9873fd4a2cf8be8d"}, + {file = "grpcio-1.67.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01f616a964e540638af5130469451cf580ba8c7329f45ca998ab66e0c7dcdb04"}, + {file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:299b3d8c4f790c6bcca485f9963b4846dd92cf6f1b65d3697145d005c80f9fe8"}, + {file = "grpcio-1.67.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:60336bff760fbb47d7e86165408126f1dded184448e9a4c892189eb7c9d3f90f"}, + {file = "grpcio-1.67.1-cp39-cp39-win32.whl", hash = "sha256:5ed601c4c6008429e3d247ddb367fe8c7259c355757448d7c1ef7bd4a6739e8e"}, + {file = "grpcio-1.67.1-cp39-cp39-win_amd64.whl", hash = "sha256:5db70d32d6703b89912af16d6d45d78406374a8b8ef0d28140351dd0ec610e98"}, + {file = "grpcio-1.67.1.tar.gz", hash = "sha256:3dc2ed4cabea4dc14d5e708c2b426205956077cc5de419b4d4079315017e9732"}, +] + +[package.extras] +protobuf = ["grpcio-tools (>=1.67.1)"] [[package]] name = "grpcio-status" -version = "1.66.2" +version = "1.67.1" description = "Status proto mapping for gRPC" optional = false python-versions = ">=3.8" files = [ - {file = "grpcio_status-1.66.2-py3-none-any.whl", hash = "sha256:e5fe189f6897d12aa9cd74408a17ca41e44fad30871cf84f5cbd17bd713d2455"}, - {file = "grpcio_status-1.66.2.tar.gz", hash = "sha256:fb55cbb5c2e67062f7a4d5c99e489d074fb57e98678d5c3c6692a2d74d89e9ae"}, + {file = "grpcio_status-1.67.1-py3-none-any.whl", hash = "sha256:16e6c085950bdacac97c779e6a502ea671232385e6e37f258884d6883392c2bd"}, + {file = "grpcio_status-1.67.1.tar.gz", hash = "sha256:2bf38395e028ceeecfd8866b081f61628114b384da7d51ae064ddc8d766a5d11"}, ] [package.dependencies] googleapis-common-protos = ">=1.5.5" -grpcio = ">=1.66.2" +grpcio = ">=1.67.1" protobuf = ">=5.26.1,<6.0dev" [[package]] @@ -1219,6 +1240,17 @@ dev = ["bump2version (>=1.0.1,<2.0.0)", "pip (>=20.3.1,<21.0.0)", "pre-commit (> doc = ["mkdocs (>=1.1.2,<2.0.0)", "mkdocs-autorefs (>=0.2.1,<0.3.0)", "mkdocs-include-markdown-plugin (>=1.0.0,<2.0.0)", "mkdocs-material (>=6.1.7,<7.0.0)", "mkdocstrings (>=0.15.2,<0.16.0)"] test = ["black (>=22.3.0,<23.0.0)", "flake8 (>=3.9.2,<4.0.0)", "flake8-docstrings (>=1.6.0,<2.0.0)", "isort (>=5.8.0,<6.0.0)", "jinja2 (==2.11.3)", "markupsafe (==2.0.1)", "mkdocs-material-extensions (>=1.0.1,<2.0.0)", "mypy (>=0.900,<0.901)", "pytest (>=6.2.4,<7.0.0)", "pytest-cov (>=2.12.0,<3.0.0)"] +[[package]] +name = "httpx-sse" +version = "0.4.0" +description = "Consume Server-Sent Event (SSE) messages with HTTPX." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-sse-0.4.0.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721"}, + {file = "httpx_sse-0.4.0-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f"}, +] + [[package]] name = "identify" version = "2.6.1" @@ -1291,84 +1323,84 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.6.1" +version = "0.7.0" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" files = [ - {file = "jiter-0.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d08510593cb57296851080018006dfc394070178d238b767b1879dc1013b106c"}, - {file = "jiter-0.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adef59d5e2394ebbad13b7ed5e0306cceb1df92e2de688824232a91588e77aa7"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3e02f7a27f2bcc15b7d455c9df05df8ffffcc596a2a541eeda9a3110326e7a3"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed69a7971d67b08f152c17c638f0e8c2aa207e9dd3a5fcd3cba294d39b5a8d2d"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2019d966e98f7c6df24b3b8363998575f47d26471bfb14aade37630fae836a1"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36c0b51a285b68311e207a76c385650322734c8717d16c2eb8af75c9d69506e7"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:220e0963b4fb507c525c8f58cde3da6b1be0bfddb7ffd6798fb8f2531226cdb1"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa25c7a9bf7875a141182b9c95aed487add635da01942ef7ca726e42a0c09058"}, - {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e90552109ca8ccd07f47ca99c8a1509ced93920d271bb81780a973279974c5ab"}, - {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:67723a011964971864e0b484b0ecfee6a14de1533cff7ffd71189e92103b38a8"}, - {file = "jiter-0.6.1-cp310-none-win32.whl", hash = "sha256:33af2b7d2bf310fdfec2da0177eab2fedab8679d1538d5b86a633ebfbbac4edd"}, - {file = "jiter-0.6.1-cp310-none-win_amd64.whl", hash = "sha256:7cea41c4c673353799906d940eee8f2d8fd1d9561d734aa921ae0f75cb9732f4"}, - {file = "jiter-0.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b03c24e7da7e75b170c7b2b172d9c5e463aa4b5c95696a368d52c295b3f6847f"}, - {file = "jiter-0.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:47fee1be677b25d0ef79d687e238dc6ac91a8e553e1a68d0839f38c69e0ee491"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0d2f6e01a8a0fb0eab6d0e469058dab2be46ff3139ed2d1543475b5a1d8e7"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b809e39e342c346df454b29bfcc7bca3d957f5d7b60e33dae42b0e5ec13e027"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9ac7c2f092f231f5620bef23ce2e530bd218fc046098747cc390b21b8738a7a"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e51a2d80d5fe0ffb10ed2c82b6004458be4a3f2b9c7d09ed85baa2fbf033f54b"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3343d4706a2b7140e8bd49b6c8b0a82abf9194b3f0f5925a78fc69359f8fc33c"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82521000d18c71e41c96960cb36e915a357bc83d63a8bed63154b89d95d05ad1"}, - {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c843e7c1633470708a3987e8ce617ee2979ee18542d6eb25ae92861af3f1d62"}, - {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a2e861658c3fe849efc39b06ebb98d042e4a4c51a8d7d1c3ddc3b1ea091d0784"}, - {file = "jiter-0.6.1-cp311-none-win32.whl", hash = "sha256:7d72fc86474862c9c6d1f87b921b70c362f2b7e8b2e3c798bb7d58e419a6bc0f"}, - {file = "jiter-0.6.1-cp311-none-win_amd64.whl", hash = "sha256:3e36a320634f33a07794bb15b8da995dccb94f944d298c8cfe2bd99b1b8a574a"}, - {file = "jiter-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1fad93654d5a7dcce0809aff66e883c98e2618b86656aeb2129db2cd6f26f867"}, - {file = "jiter-0.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4e6e340e8cd92edab7f6a3a904dbbc8137e7f4b347c49a27da9814015cc0420c"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691352e5653af84ed71763c3c427cff05e4d658c508172e01e9c956dfe004aba"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:defee3949313c1f5b55e18be45089970cdb936eb2a0063f5020c4185db1b63c9"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26d2bdd5da097e624081c6b5d416d3ee73e5b13f1703bcdadbb1881f0caa1933"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18aa9d1626b61c0734b973ed7088f8a3d690d0b7f5384a5270cd04f4d9f26c86"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a3567c8228afa5ddcce950631c6b17397ed178003dc9ee7e567c4c4dcae9fa0"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c0507131c922defe3f04c527d6838932fcdfd69facebafd7d3574fa3395314"}, - {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:540fcb224d7dc1bcf82f90f2ffb652df96f2851c031adca3c8741cb91877143b"}, - {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e7b75436d4fa2032b2530ad989e4cb0ca74c655975e3ff49f91a1a3d7f4e1df2"}, - {file = "jiter-0.6.1-cp312-none-win32.whl", hash = "sha256:883d2ced7c21bf06874fdeecab15014c1c6d82216765ca6deef08e335fa719e0"}, - {file = "jiter-0.6.1-cp312-none-win_amd64.whl", hash = "sha256:91e63273563401aadc6c52cca64a7921c50b29372441adc104127b910e98a5b6"}, - {file = "jiter-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:852508a54fe3228432e56019da8b69208ea622a3069458252f725d634e955b31"}, - {file = "jiter-0.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f491cc69ff44e5a1e8bc6bf2b94c1f98d179e1aaf4a554493c171a5b2316b701"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc56c8f0b2a28ad4d8047f3ae62d25d0e9ae01b99940ec0283263a04724de1f3"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51b58f7a0d9e084a43b28b23da2b09fc5e8df6aa2b6a27de43f991293cab85fd"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f79ce15099154c90ef900d69c6b4c686b64dfe23b0114e0971f2fecd306ec6c"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03a025b52009f47e53ea619175d17e4ded7c035c6fbd44935cb3ada11e1fd592"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74a8d93718137c021d9295248a87c2f9fdc0dcafead12d2930bc459ad40f885"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40b03b75f903975f68199fc4ec73d546150919cb7e534f3b51e727c4d6ccca5a"}, - {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:825651a3f04cf92a661d22cad61fc913400e33aa89b3e3ad9a6aa9dc8a1f5a71"}, - {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:928bf25eb69ddb292ab8177fe69d3fbf76c7feab5fce1c09265a7dccf25d3991"}, - {file = "jiter-0.6.1-cp313-none-win32.whl", hash = "sha256:352cd24121e80d3d053fab1cc9806258cad27c53cad99b7a3cac57cf934b12e4"}, - {file = "jiter-0.6.1-cp313-none-win_amd64.whl", hash = "sha256:be7503dd6f4bf02c2a9bacb5cc9335bc59132e7eee9d3e931b13d76fd80d7fda"}, - {file = "jiter-0.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:31d8e00e1fb4c277df8ab6f31a671f509ebc791a80e5c61fdc6bc8696aaa297c"}, - {file = "jiter-0.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77c296d65003cd7ee5d7b0965f6acbe6cffaf9d1fa420ea751f60ef24e85fed5"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeeb0c0325ef96c12a48ea7e23e2e86fe4838e6e0a995f464cf4c79fa791ceeb"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a31c6fcbe7d6c25d6f1cc6bb1cba576251d32795d09c09961174fe461a1fb5bd"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59e2b37f3b9401fc9e619f4d4badcab2e8643a721838bcf695c2318a0475ae42"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bae5ae4853cb9644144e9d0755854ce5108d470d31541d83f70ca7ecdc2d1637"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df588e9c830b72d8db1dd7d0175af6706b0904f682ea9b1ca8b46028e54d6e9"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15f8395e835cf561c85c1adee72d899abf2733d9df72e9798e6d667c9b5c1f30"}, - {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a99d4e0b5fc3b05ea732d67eb2092fe894e95a90e6e413f2ea91387e228a307"}, - {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a311df1fa6be0ccd64c12abcd85458383d96e542531bafbfc0a16ff6feda588f"}, - {file = "jiter-0.6.1-cp38-none-win32.whl", hash = "sha256:81116a6c272a11347b199f0e16b6bd63f4c9d9b52bc108991397dd80d3c78aba"}, - {file = "jiter-0.6.1-cp38-none-win_amd64.whl", hash = "sha256:13f9084e3e871a7c0b6e710db54444088b1dd9fbefa54d449b630d5e73bb95d0"}, - {file = "jiter-0.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f1c53615fcfec3b11527c08d19cff6bc870da567ce4e57676c059a3102d3a082"}, - {file = "jiter-0.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f791b6a4da23238c17a81f44f5b55d08a420c5692c1fda84e301a4b036744eb1"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c97e90fec2da1d5f68ef121444c2c4fa72eabf3240829ad95cf6bbeca42a301"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cbc1a66b4e41511209e97a2866898733c0110b7245791ac604117b7fb3fedb7"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e85f9e12cd8418ab10e1fcf0e335ae5bb3da26c4d13a0fd9e6a17a674783b6"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08be33db6dcc374c9cc19d3633af5e47961a7b10d4c61710bd39e48d52a35824"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:677be9550004f5e010d673d3b2a2b815a8ea07a71484a57d3f85dde7f14cf132"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8bd065be46c2eecc328e419d6557bbc37844c88bb07b7a8d2d6c91c7c4dedc9"}, - {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bd95375ce3609ec079a97c5d165afdd25693302c071ca60c7ae1cf826eb32022"}, - {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db459ed22d0208940d87f614e1f0ea5a946d29a3cfef71f7e1aab59b6c6b2afb"}, - {file = "jiter-0.6.1-cp39-none-win32.whl", hash = "sha256:d71c962f0971347bd552940ab96aa42ceefcd51b88c4ced8a27398182efa8d80"}, - {file = "jiter-0.6.1-cp39-none-win_amd64.whl", hash = "sha256:d465db62d2d10b489b7e7a33027c4ae3a64374425d757e963f86df5b5f2e7fc5"}, - {file = "jiter-0.6.1.tar.gz", hash = "sha256:e19cd21221fc139fb032e4112986656cb2739e9fe6d84c13956ab30ccc7d4449"}, + {file = "jiter-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e14027f61101b3f5e173095d9ecf95c1cac03ffe45a849279bde1d97e559e314"}, + {file = "jiter-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:979ec4711c2e37ac949561858bd42028884c9799516a923e1ff0b501ef341a4a"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:662d5d3cca58ad6af7a3c6226b641c8655de5beebcb686bfde0df0f21421aafa"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d89008fb47043a469f97ad90840b97ba54e7c3d62dc7cbb6cbf938bd0caf71d"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8b16c35c846a323ce9067170d5ab8c31ea3dbcab59c4f7608bbbf20c2c3b43f"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e82daaa1b0a68704f9029b81e664a5a9de3e466c2cbaabcda5875f961702e7"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43a87a9f586636e1f0dd3651a91f79b491ea0d9fd7cbbf4f5c463eebdc48bda7"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ec05b1615f96cc3e4901678bc863958611584072967d9962f9e571d60711d52"}, + {file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5cb97e35370bde7aa0d232a7f910f5a0fbbc96bc0a7dbaa044fd5cd6bcd7ec3"}, + {file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb316dacaf48c8c187cea75d0d7f835f299137e6fdd13f691dff8f92914015c7"}, + {file = "jiter-0.7.0-cp310-none-win32.whl", hash = "sha256:243f38eb4072763c54de95b14ad283610e0cd3bf26393870db04e520f60eebb3"}, + {file = "jiter-0.7.0-cp310-none-win_amd64.whl", hash = "sha256:2221d5603c139f6764c54e37e7c6960c469cbcd76928fb10d15023ba5903f94b"}, + {file = "jiter-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:91cec0ad755bd786c9f769ce8d843af955df6a8e56b17658771b2d5cb34a3ff8"}, + {file = "jiter-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:feba70a28a27d962e353e978dbb6afd798e711c04cb0b4c5e77e9d3779033a1a"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d866ec066c3616cacb8535dbda38bb1d470b17b25f0317c4540182bc886ce2"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7a7a00b6f9f18289dd563596f97ecaba6c777501a8ba04bf98e03087bcbc60"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9aaf564094c7db8687f2660605e099f3d3e6ea5e7135498486674fcb78e29165"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4d27e09825c1b3c7a667adb500ce8b840e8fc9f630da8454b44cdd4fb0081bb"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca7c287da9c1d56dda88da1d08855a787dbb09a7e2bd13c66a2e288700bd7c7"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db19a6d160f093cbc8cd5ea2abad420b686f6c0e5fb4f7b41941ebc6a4f83cda"}, + {file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e46a63c7f877cf7441ffc821c28287cfb9f533ae6ed707bde15e7d4dfafa7ae"}, + {file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ba426fa7ff21cb119fa544b75dd3fbee6a70e55a5829709c0338d07ccd30e6d"}, + {file = "jiter-0.7.0-cp311-none-win32.whl", hash = "sha256:c07f55a64912b0c7982377831210836d2ea92b7bd343fca67a32212dd72e38e0"}, + {file = "jiter-0.7.0-cp311-none-win_amd64.whl", hash = "sha256:ed27b2c43e1b5f6c7fedc5c11d4d8bfa627de42d1143d87e39e2e83ddefd861a"}, + {file = "jiter-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac7930bcaaeb1e229e35c91c04ed2e9f39025b86ee9fc3141706bbf6fff4aeeb"}, + {file = "jiter-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:571feae3e7c901a8eedde9fd2865b0dfc1432fb15cab8c675a8444f7d11b7c5d"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8af4df8a262fa2778b68c2a03b6e9d1cb4d43d02bea6976d46be77a3a331af1"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd028d4165097a611eb0c7494d8c1f2aebd46f73ca3200f02a175a9c9a6f22f5"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b487247c7836810091e9455efe56a52ec51bfa3a222237e1587d04d3e04527"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6d28a92f28814e1a9f2824dc11f4e17e1df1f44dc4fdeb94c5450d34bcb2602"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90443994bbafe134f0b34201dad3ebe1c769f0599004084e046fb249ad912425"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f9abf464f9faac652542ce8360cea8e68fba2b78350e8a170248f9bcc228702a"}, + {file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db7a8d99fc5f842f7d2852f06ccaed066532292c41723e5dff670c339b649f88"}, + {file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:15cf691ebd8693b70c94627d6b748f01e6d697d9a6e9f2bc310934fcfb7cf25e"}, + {file = "jiter-0.7.0-cp312-none-win32.whl", hash = "sha256:9dcd54fa422fb66ca398bec296fed5f58e756aa0589496011cfea2abb5be38a5"}, + {file = "jiter-0.7.0-cp312-none-win_amd64.whl", hash = "sha256:cc989951f73f9375b8eacd571baaa057f3d7d11b7ce6f67b9d54642e7475bfad"}, + {file = "jiter-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:24cecd18df540963cd27c08ca5ce1d0179f229ff78066d9eecbe5add29361340"}, + {file = "jiter-0.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d41b46236b90b043cca73785674c23d2a67d16f226394079d0953f94e765ed76"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b160db0987171365c153e406a45dcab0ee613ae3508a77bfff42515cb4ce4d6e"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1c8d91e0f0bd78602eaa081332e8ee4f512c000716f5bc54e9a037306d693a7"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997706c683195eeff192d2e5285ce64d2a610414f37da3a3f2625dcf8517cf90"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ea52a8a0ff0229ab2920284079becd2bae0688d432fca94857ece83bb49c541"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d77449d2738cf74752bb35d75ee431af457e741124d1db5e112890023572c7c"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8203519907a1d81d6cb00902c98e27c2d0bf25ce0323c50ca594d30f5f1fbcf"}, + {file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41d15ccc53931c822dd7f1aebf09faa3cda2d7b48a76ef304c7dbc19d1302e51"}, + {file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:febf3179b2fabf71fbd2fd52acb8594163bb173348b388649567a548f356dbf6"}, + {file = "jiter-0.7.0-cp313-none-win32.whl", hash = "sha256:4a8e2d866e7eda19f012444e01b55079d8e1c4c30346aaac4b97e80c54e2d6d3"}, + {file = "jiter-0.7.0-cp313-none-win_amd64.whl", hash = "sha256:7417c2b928062c496f381fb0cb50412eee5ad1d8b53dbc0e011ce45bb2de522c"}, + {file = "jiter-0.7.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9c62c737b5368e51e74960a08fe1adc807bd270227291daede78db24d5fbf556"}, + {file = "jiter-0.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e4640722b1bef0f6e342fe4606aafaae0eb4f4be5c84355bb6867f34400f6688"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f367488c3b9453eab285424c61098faa1cab37bb49425e69c8dca34f2dfe7d69"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0cf5d42beb3514236459454e3287db53d9c4d56c4ebaa3e9d0efe81b19495129"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc5190ea1113ee6f7252fa8a5fe5a6515422e378356c950a03bbde5cafbdbaab"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ee47a149d698796a87abe445fc8dee21ed880f09469700c76c8d84e0d11efd"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48592c26ea72d3e71aa4bea0a93454df907d80638c3046bb0705507b6704c0d7"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:79fef541199bd91cfe8a74529ecccb8eaf1aca38ad899ea582ebbd4854af1e51"}, + {file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d1ef6bb66041f2514739240568136c81b9dcc64fd14a43691c17ea793b6535c0"}, + {file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aca4d950863b1c238e315bf159466e064c98743eef3bd0ff9617e48ff63a4715"}, + {file = "jiter-0.7.0-cp38-none-win32.whl", hash = "sha256:897745f230350dcedb8d1ebe53e33568d48ea122c25e6784402b6e4e88169be7"}, + {file = "jiter-0.7.0-cp38-none-win_amd64.whl", hash = "sha256:b928c76a422ef3d0c85c5e98c498ce3421b313c5246199541e125b52953e1bc0"}, + {file = "jiter-0.7.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c9b669ff6f8ba08270dee9ccf858d3b0203b42314a428a1676762f2d390fbb64"}, + {file = "jiter-0.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5be919bacd73ca93801c3042bce6e95cb9c555a45ca83617b9b6c89df03b9c2"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a282e1e8a396dabcea82d64f9d05acf7efcf81ecdd925b967020dcb0e671c103"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:17ecb1a578a56e97a043c72b463776b5ea30343125308f667fb8fce4b3796735"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b6045fa0527129218cdcd8a8b839f678219686055f31ebab35f87d354d9c36e"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:189cc4262a92e33c19d4fd24018f5890e4e6da5b2581f0059938877943f8298c"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c138414839effbf30d185e30475c6dc8a16411a1e3681e5fd4605ab1233ac67a"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2791604acef33da6b72d5ecf885a32384bcaf9aa1e4be32737f3b8b9588eef6a"}, + {file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae60ec89037a78d60bbf3d8b127f1567769c8fa24886e0abed3f622791dea478"}, + {file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:836f03dea312967635233d826f783309b98cfd9ccc76ac776e224cfcef577862"}, + {file = "jiter-0.7.0-cp39-none-win32.whl", hash = "sha256:ebc30ae2ce4bc4986e1764c404b4ea1924f926abf02ce92516485098f8545374"}, + {file = "jiter-0.7.0-cp39-none-win_amd64.whl", hash = "sha256:abf596f951370c648f37aa9899deab296c42a3829736e598b0dd10b08f77a44d"}, + {file = "jiter-0.7.0.tar.gz", hash = "sha256:c061d9738535497b5509f8970584f20de1e900806b239a39a9994fc191dad630"}, ] [[package]] @@ -1452,19 +1484,19 @@ referencing = ">=0.31.0" [[package]] name = "langchain" -version = "0.3.3" +version = "0.3.7" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain-0.3.3-py3-none-any.whl", hash = "sha256:05ac98c674853c2386d043172820e37ceac9b913aaaf1e51217f0fc424112c72"}, - {file = "langchain-0.3.3.tar.gz", hash = "sha256:6435882996a029a60c61c356bbe51bab4a8f43a54210f5f03e3c4474d19d1842"}, + {file = "langchain-0.3.7-py3-none-any.whl", hash = "sha256:cf4af1d5751dacdc278df3de1ff3cbbd8ca7eb55d39deadccdd7fb3d3ee02ac0"}, + {file = "langchain-0.3.7.tar.gz", hash = "sha256:2e4f83bf794ba38562f7ba0ede8171d7e28a583c0cec6f8595cfe72147d336b2"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" async-timeout = {version = ">=4.0.0,<5.0.0", markers = "python_version < \"3.11\""} -langchain-core = ">=0.3.10,<0.4.0" +langchain-core = ">=0.3.15,<0.4.0" langchain-text-splitters = ">=0.3.0,<0.4.0" langsmith = ">=0.1.17,<0.2.0" numpy = [ @@ -1475,24 +1507,25 @@ pydantic = ">=2.7.4,<3.0.0" PyYAML = ">=5.3" requests = ">=2,<3" SQLAlchemy = ">=1.4,<3" -tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-community" -version = "0.3.2" +version = "0.3.4" description = "Community contributed LangChain integrations." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_community-0.3.2-py3-none-any.whl", hash = "sha256:fffcd484c7674e81ceaa72a809962338bfb17ec8f9e0377ce4e9d884e6fe8ca5"}, - {file = "langchain_community-0.3.2.tar.gz", hash = "sha256:469bf5357a08c915cebc4c506dca4617eec737d82a9b6e340df5f3b814dc89bc"}, + {file = "langchain_community-0.3.4-py3-none-any.whl", hash = "sha256:67a44d3db8ba14a8abae67c8f611e6dc20002446439e761f673c7dffa506fb85"}, + {file = "langchain_community-0.3.4.tar.gz", hash = "sha256:80c7e6491788449b8a6e7a31444ff8ebb5c32242f67a65aa33d56ad35a7b5b5c"}, ] [package.dependencies] aiohttp = ">=3.8.3,<4.0.0" dataclasses-json = ">=0.5.7,<0.7" -langchain = ">=0.3.3,<0.4.0" -langchain-core = ">=0.3.10,<0.4.0" +httpx-sse = ">=0.4.0,<0.5.0" +langchain = ">=0.3.6,<0.4.0" +langchain-core = ">=0.3.14,<0.4.0" langsmith = ">=0.1.125,<0.2.0" numpy = [ {version = ">=1,<2", markers = "python_version < \"3.12\""}, @@ -1502,17 +1535,17 @@ pydantic-settings = ">=2.4.0,<3.0.0" PyYAML = ">=5.3" requests = ">=2,<3" SQLAlchemy = ">=1.4,<3" -tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10" [[package]] name = "langchain-core" -version = "0.3.10" +version = "0.3.15" description = "Building applications with LLMs through composability" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_core-0.3.10-py3-none-any.whl", hash = "sha256:146be6bf2d3dc0d6f4feb46ef082182cf57b056e8163d45278529cd7b7343d2f"}, - {file = "langchain_core-0.3.10.tar.gz", hash = "sha256:63b9a3d03b52dba29cc248b752c574cdcb5fb04bd0fc5c76097fcbb7aaba5221"}, + {file = "langchain_core-0.3.15-py3-none-any.whl", hash = "sha256:3d4ca6dbb8ed396a6ee061063832a2451b0ce8c345570f7b086ffa7288e4fa29"}, + {file = "langchain_core-0.3.15.tar.gz", hash = "sha256:b1a29787a4ffb7ec2103b4e97d435287201da7809b369740dd1e32f176325aba"}, ] [package.dependencies] @@ -1524,23 +1557,23 @@ pydantic = [ {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, ] PyYAML = ">=5.3" -tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<9.0.0" +tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10.0.0" typing-extensions = ">=4.7" [[package]] name = "langchain-openai" -version = "0.2.2" +version = "0.2.5" description = "An integration package connecting OpenAI and LangChain" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_openai-0.2.2-py3-none-any.whl", hash = "sha256:3a203228cb38e4711ebd8c0a3bd51854e447f1d017e8475b6467b07ce7dd3e88"}, - {file = "langchain_openai-0.2.2.tar.gz", hash = "sha256:9ae8e2ec7d1ca84fd3bfa82186724528d68e1510a1dc9cdf617a7c669b7a7768"}, + {file = "langchain_openai-0.2.5-py3-none-any.whl", hash = "sha256:745fd9d51a5a3a9cb8839d41f3786ab38dfc539e47c713a806cbca32f3d0875c"}, + {file = "langchain_openai-0.2.5.tar.gz", hash = "sha256:55b98711a880474ec363267bf6cd0e2727dc00e8433731318d063a2184582c28"}, ] [package.dependencies] -langchain-core = ">=0.3.9,<0.4.0" -openai = ">=1.40.0,<2.0.0" +langchain-core = ">=0.3.15,<0.4.0" +openai = ">=1.52.0,<2.0.0" tiktoken = ">=0.7,<1" [[package]] @@ -1564,35 +1597,34 @@ sqlalchemy = ">=2,<3" [[package]] name = "langchain-text-splitters" -version = "0.3.0" +version = "0.3.2" description = "LangChain text splitting utilities" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "langchain_text_splitters-0.3.0-py3-none-any.whl", hash = "sha256:e84243e45eaff16e5b776cd9c81b6d07c55c010ebcb1965deb3d1792b7358e83"}, - {file = "langchain_text_splitters-0.3.0.tar.gz", hash = "sha256:f9fe0b4d244db1d6de211e7343d4abc4aa90295aa22e1f0c89e51f33c55cd7ce"}, + {file = "langchain_text_splitters-0.3.2-py3-none-any.whl", hash = "sha256:0db28c53f41d1bc024cdb3b1646741f6d46d5371e90f31e7e7c9fbe75d01c726"}, + {file = "langchain_text_splitters-0.3.2.tar.gz", hash = "sha256:81e6515d9901d6dd8e35fb31ccd4f30f76d44b771890c789dc835ef9f16204df"}, ] [package.dependencies] -langchain-core = ">=0.3.0,<0.4.0" +langchain-core = ">=0.3.15,<0.4.0" [[package]] name = "langfuse" -version = "2.52.0" +version = "2.36.2" description = "A client library for accessing langfuse" optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langfuse-2.52.0-py3-none-any.whl", hash = "sha256:f2497966bd31adedbb2d643fde3b15cf0387cfbcdac8ebc2db2b6df9413b888a"}, - {file = "langfuse-2.52.0.tar.gz", hash = "sha256:3ceb8803cb5991dd1127167a2b1288c7c6edc43429547ded1d6dc9e064e6e5cd"}, + {file = "langfuse-2.36.2-py3-none-any.whl", hash = "sha256:66728feddcec0974e4eb31612151a282fcce2e333b5a61474182b5e67e78e090"}, + {file = "langfuse-2.36.2.tar.gz", hash = "sha256:3e784505d408aa2c9c2da79487b64d185d8f7fa8a855e5303bcce678454c715b"}, ] [package.dependencies] -anyio = ">=4.4.0,<5.0.0" backoff = ">=1.10.0" httpx = ">=0.15.4,<1.0" idna = ">=3.7,<4.0" -packaging = ">=23.2,<25.0" +packaging = ">=23.2,<24.0" pydantic = ">=1.10.7,<3.0" wrapt = ">=1.14,<2.0" @@ -1603,13 +1635,13 @@ openai = ["openai (>=0.27.8)"] [[package]] name = "langsmith" -version = "0.1.133" +version = "0.1.139" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." optional = false python-versions = "<4.0,>=3.8.1" files = [ - {file = "langsmith-0.1.133-py3-none-any.whl", hash = "sha256:82e837a6039c483beadbe19c2ba7ebafbd402d3e8105234f5ef334425cff7b45"}, - {file = "langsmith-0.1.133.tar.gz", hash = "sha256:7bfd8bef166b9a64ee540a11bee4aa7bf43b1d9229f95b0fc19086454955185d"}, + {file = "langsmith-0.1.139-py3-none-any.whl", hash = "sha256:2a4a541bfbd0a9727255df28a60048c85bc8c4c6a276975923785c3fd82dc879"}, + {file = "langsmith-0.1.139.tar.gz", hash = "sha256:2f9e4d32fef3ad7ef42c8506448cce3a31ad6b78bb4f3310db04ddaa1e9d744d"}, ] [package.dependencies] @@ -1624,13 +1656,13 @@ requests-toolbelt = ">=1.0.0,<2.0.0" [[package]] name = "license-expression" -version = "30.3.1" +version = "30.4.0" description = "license-expression is a comprehensive utility library to parse, compare, simplify and normalize license expressions (such as SPDX license expressions) using boolean logic." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "license_expression-30.3.1-py3-none-any.whl", hash = "sha256:97904b9185c7bbb1e98799606fa7424191c375e70ba63a524b6f7100e42ddc46"}, - {file = "license_expression-30.3.1.tar.gz", hash = "sha256:60d5bec1f3364c256a92b9a08583d7ea933c7aa272c8d36d04144a89a3858c01"}, + {file = "license_expression-30.4.0-py3-none-any.whl", hash = "sha256:7c8f240c6e20d759cb8455e49cb44a923d9e25c436bf48d7e5b8eea660782c04"}, + {file = "license_expression-30.4.0.tar.gz", hash = "sha256:6464397f8ed4353cc778999caec43b099f8d8d5b335f282e26a9eb9435522f05"}, ] [package.dependencies] @@ -1820,92 +1852,92 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "3.0.1" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.9" files = [ - {file = "MarkupSafe-3.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:db842712984e91707437461930e6011e60b39136c7331e971952bb30465bc1a1"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ffb4a8e7d46ed96ae48805746755fadd0909fea2306f93d5d8233ba23dda12a"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67c519635a4f64e495c50e3107d9b4075aec33634272b5db1cde839e07367589"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48488d999ed50ba8d38c581d67e496f955821dc183883550a6fbc7f1aefdc170"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f31ae06f1328595d762c9a2bf29dafd8621c7d3adc130cbb46278079758779ca"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:80fcbf3add8790caddfab6764bde258b5d09aefbe9169c183f88a7410f0f6dea"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3341c043c37d78cc5ae6e3e305e988532b072329639007fd408a476642a89fd6"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cb53e2a99df28eee3b5f4fea166020d3ef9116fdc5764bc5117486e6d1211b25"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-win32.whl", hash = "sha256:db15ce28e1e127a0013dfb8ac243a8e392db8c61eae113337536edb28bdc1f97"}, - {file = "MarkupSafe-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:4ffaaac913c3f7345579db4f33b0020db693f302ca5137f106060316761beea9"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:26627785a54a947f6d7336ce5963569b5d75614619e75193bdb4e06e21d447ad"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b954093679d5750495725ea6f88409946d69cfb25ea7b4c846eef5044194f583"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:973a371a55ce9ed333a3a0f8e0bcfae9e0d637711534bcb11e130af2ab9334e7"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:244dbe463d5fb6d7ce161301a03a6fe744dac9072328ba9fc82289238582697b"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d98e66a24497637dd31ccab090b34392dddb1f2f811c4b4cd80c230205c074a3"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:ad91738f14eb8da0ff82f2acd0098b6257621410dcbd4df20aaa5b4233d75a50"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:7044312a928a66a4c2a22644147bc61a199c1709712069a344a3fb5cfcf16915"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a4792d3b3a6dfafefdf8e937f14906a51bd27025a36f4b188728a73382231d91"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-win32.whl", hash = "sha256:fa7d686ed9883f3d664d39d5a8e74d3c5f63e603c2e3ff0abcba23eac6542635"}, - {file = "MarkupSafe-3.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:9ba25a71ebf05b9bb0e2ae99f8bc08a07ee8e98c612175087112656ca0f5c8bf"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:8ae369e84466aa70f3154ee23c1451fda10a8ee1b63923ce76667e3077f2b0c4"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40f1e10d51c92859765522cbd79c5c8989f40f0419614bcdc5015e7b6bf97fc5"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a4cb365cb49b750bdb60b846b0c0bc49ed62e59a76635095a179d440540c346"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee3941769bd2522fe39222206f6dd97ae83c442a94c90f2b7a25d847d40f4729"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62fada2c942702ef8952754abfc1a9f7658a4d5460fabe95ac7ec2cbe0d02abc"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4c2d64fdba74ad16138300815cfdc6ab2f4647e23ced81f59e940d7d4a1469d9"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fb532dd9900381d2e8f48172ddc5a59db4c445a11b9fab40b3b786da40d3b56b"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0f84af7e813784feb4d5e4ff7db633aba6c8ca64a833f61d8e4eade234ef0c38"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-win32.whl", hash = "sha256:cbf445eb5628981a80f54087f9acdbf84f9b7d862756110d172993b9a5ae81aa"}, - {file = "MarkupSafe-3.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:a10860e00ded1dd0a65b83e717af28845bb7bd16d8ace40fe5531491de76b79f"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e81c52638315ff4ac1b533d427f50bc0afc746deb949210bc85f05d4f15fd772"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:312387403cd40699ab91d50735ea7a507b788091c416dd007eac54434aee51da"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ae99f31f47d849758a687102afdd05bd3d3ff7dbab0a8f1587981b58a76152a"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c97ff7fedf56d86bae92fa0a646ce1a0ec7509a7578e1ed238731ba13aabcd1c"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7420ceda262dbb4b8d839a4ec63d61c261e4e77677ed7c66c99f4e7cb5030dd"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45d42d132cff577c92bfba536aefcfea7e26efb975bd455db4e6602f5c9f45e7"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4c8817557d0de9349109acb38b9dd570b03cc5014e8aabf1cbddc6e81005becd"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a54c43d3ec4cf2a39f4387ad044221c66a376e58c0d0e971d47c475ba79c6b5"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-win32.whl", hash = "sha256:c91b394f7601438ff79a4b93d16be92f216adb57d813a78be4446fe0f6bc2d8c"}, - {file = "MarkupSafe-3.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:fe32482b37b4b00c7a52a07211b479653b7fe4f22b2e481b9a9b099d8a430f2f"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:17b2aea42a7280db02ac644db1d634ad47dcc96faf38ab304fe26ba2680d359a"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:852dc840f6d7c985603e60b5deaae1d89c56cb038b577f6b5b8c808c97580f1d"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0778de17cff1acaeccc3ff30cd99a3fd5c50fc58ad3d6c0e0c4c58092b859396"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:800100d45176652ded796134277ecb13640c1a537cad3b8b53da45aa96330453"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d06b24c686a34c86c8c1fba923181eae6b10565e4d80bdd7bc1c8e2f11247aa4"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:33d1c36b90e570ba7785dacd1faaf091203d9942bc036118fab8110a401eb1a8"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:beeebf760a9c1f4c07ef6a53465e8cfa776ea6a2021eda0d0417ec41043fe984"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bbde71a705f8e9e4c3e9e33db69341d040c827c7afa6789b14c6e16776074f5a"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-win32.whl", hash = "sha256:82b5dba6eb1bcc29cc305a18a3c5365d2af06ee71b123216416f7e20d2a84e5b"}, - {file = "MarkupSafe-3.0.1-cp313-cp313t-win_amd64.whl", hash = "sha256:730d86af59e0e43ce277bb83970530dd223bf7f2a838e086b50affa6ec5f9295"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4935dd7883f1d50e2ffecca0aa33dc1946a94c8f3fdafb8df5c330e48f71b132"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e9393357f19954248b00bed7c56f29a25c930593a77630c719653d51e7669c2a"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40621d60d0e58aa573b68ac5e2d6b20d44392878e0bfc159012a5787c4e35bc8"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f94190df587738280d544971500b9cafc9b950d32efcb1fba9ac10d84e6aa4e6"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6a387d61fe41cdf7ea95b38e9af11cfb1a63499af2759444b99185c4ab33f5b"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:8ad4ad1429cd4f315f32ef263c1342166695fad76c100c5d979c45d5570ed58b"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:e24bfe89c6ac4c31792793ad9f861b8f6dc4546ac6dc8f1c9083c7c4f2b335cd"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:2a4b34a8d14649315c4bc26bbfa352663eb51d146e35eef231dd739d54a5430a"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-win32.whl", hash = "sha256:242d6860f1fd9191aef5fae22b51c5c19767f93fb9ead4d21924e0bcb17619d8"}, - {file = "MarkupSafe-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:93e8248d650e7e9d49e8251f883eed60ecbc0e8ffd6349e18550925e31bd029b"}, - {file = "markupsafe-3.0.1.tar.gz", hash = "sha256:3e683ee4f5d0fa2dde4db77ed8dd8a876686e3fc417655c2ece9a90576905344"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] name = "marshmallow" -version = "3.22.0" +version = "3.23.1" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "marshmallow-3.22.0-py3-none-any.whl", hash = "sha256:71a2dce49ef901c3f97ed296ae5051135fd3febd2bf43afe0ae9a82143a494d9"}, - {file = "marshmallow-3.22.0.tar.gz", hash = "sha256:4972f529104a220bb8637d595aa4c9762afbe7f7a77d82dc58c1615d70c5823e"}, + {file = "marshmallow-3.23.1-py3-none-any.whl", hash = "sha256:fece2eb2c941180ea1b7fcbd4a83c51bfdd50093fdd3ad2585ee5e1df2508491"}, + {file = "marshmallow-3.23.1.tar.gz", hash = "sha256:3a8dfda6edd8dcdbf216c0ede1d1e78d230a6dc9c5a088f58c4083b974a0d468"}, ] [package.dependencies] packaging = ">=17.0" [package.extras] -dev = ["marshmallow[tests]", "pre-commit (>=3.5,<4.0)", "tox"] -docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.13)", "sphinx (==8.0.2)", "sphinx-issues (==4.1.0)", "sphinx-version-warning (==1.1.2)"] -tests = ["pytest", "pytz", "simplejson"] +dev = ["marshmallow[tests]", "pre-commit (>=3.5,<5.0)", "tox"] +docs = ["alabaster (==1.0.0)", "autodocsumm (==0.2.14)", "sphinx (==8.1.3)", "sphinx-issues (==5.0.0)", "sphinx-version-warning (==1.1.2)"] +tests = ["pytest", "simplejson"] [[package]] name = "mdurl" @@ -2164,13 +2196,13 @@ files = [ [[package]] name = "openai" -version = "1.51.2" +version = "1.53.0" description = "The official Python library for the openai API" optional = false python-versions = ">=3.7.1" files = [ - {file = "openai-1.51.2-py3-none-any.whl", hash = "sha256:5c5954711cba931423e471c37ff22ae0fd3892be9b083eee36459865fbbb83fa"}, - {file = "openai-1.51.2.tar.gz", hash = "sha256:c6a51fac62a1ca9df85a522e462918f6bb6bc51a8897032217e453a0730123a6"}, + {file = "openai-1.53.0-py3-none-any.whl", hash = "sha256:20f408c32fc5cb66e60c6882c994cdca580a5648e10045cd840734194f033418"}, + {file = "openai-1.53.0.tar.gz", hash = "sha256:be2c4e77721b166cce8130e544178b7d579f751b4b074ffbaade3854b6f85ec5"}, ] [package.dependencies] @@ -2212,79 +2244,80 @@ kerberos = ["requests-kerberos"] [[package]] name = "orjson" -version = "3.10.7" +version = "3.10.11" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" optional = false python-versions = ">=3.8" files = [ - {file = "orjson-3.10.7-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:74f4544f5a6405b90da8ea724d15ac9c36da4d72a738c64685003337401f5c12"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a566f22c28222b08875b18b0dfbf8a947e69df21a9ed5c51a6bf91cfb944ac"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bf6ba8ebc8ef5792e2337fb0419f8009729335bb400ece005606336b7fd7bab7"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7cf6222b29fbda9e3a472b41e6a5538b48f2c8f99261eecd60aafbdb60690c"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de817e2f5fc75a9e7dd350c4b0f54617b280e26d1631811a43e7e968fa71e3e9"}, - {file = "orjson-3.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:348bdd16b32556cf8d7257b17cf2bdb7ab7976af4af41ebe79f9796c218f7e91"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:479fd0844ddc3ca77e0fd99644c7fe2de8e8be1efcd57705b5c92e5186e8a250"}, - {file = "orjson-3.10.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fdf5197a21dd660cf19dfd2a3ce79574588f8f5e2dbf21bda9ee2d2b46924d84"}, - {file = "orjson-3.10.7-cp310-none-win32.whl", hash = "sha256:d374d36726746c81a49f3ff8daa2898dccab6596864ebe43d50733275c629175"}, - {file = "orjson-3.10.7-cp310-none-win_amd64.whl", hash = "sha256:cb61938aec8b0ffb6eef484d480188a1777e67b05d58e41b435c74b9d84e0b9c"}, - {file = "orjson-3.10.7-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:7db8539039698ddfb9a524b4dd19508256107568cdad24f3682d5773e60504a2"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:480f455222cb7a1dea35c57a67578848537d2602b46c464472c995297117fa09"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8a9c9b168b3a19e37fe2778c0003359f07822c90fdff8f98d9d2a91b3144d8e0"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8de062de550f63185e4c1c54151bdddfc5625e37daf0aa1e75d2a1293e3b7d9a"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b0dd04483499d1de9c8f6203f8975caf17a6000b9c0c54630cef02e44ee624e"}, - {file = "orjson-3.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58d3795dafa334fc8fd46f7c5dc013e6ad06fd5b9a4cc98cb1456e7d3558bd6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:33cfb96c24034a878d83d1a9415799a73dc77480e6c40417e5dda0710d559ee6"}, - {file = "orjson-3.10.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e724cebe1fadc2b23c6f7415bad5ee6239e00a69f30ee423f319c6af70e2a5c0"}, - {file = "orjson-3.10.7-cp311-none-win32.whl", hash = "sha256:82763b46053727a7168d29c772ed5c870fdae2f61aa8a25994c7984a19b1021f"}, - {file = "orjson-3.10.7-cp311-none-win_amd64.whl", hash = "sha256:eb8d384a24778abf29afb8e41d68fdd9a156cf6e5390c04cc07bbc24b89e98b5"}, - {file = "orjson-3.10.7-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:44a96f2d4c3af51bfac6bc4ef7b182aa33f2f054fd7f34cc0ee9a320d051d41f"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76ac14cd57df0572453543f8f2575e2d01ae9e790c21f57627803f5e79b0d3c3"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bdbb61dcc365dd9be94e8f7df91975edc9364d6a78c8f7adb69c1cdff318ec93"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b48b3db6bb6e0a08fa8c83b47bc169623f801e5cc4f24442ab2b6617da3b5313"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:23820a1563a1d386414fef15c249040042b8e5d07b40ab3fe3efbfbbcbcb8864"}, - {file = "orjson-3.10.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0c6a008e91d10a2564edbb6ee5069a9e66df3fbe11c9a005cb411f441fd2c09"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d352ee8ac1926d6193f602cbe36b1643bbd1bbcb25e3c1a657a4390f3000c9a5"}, - {file = "orjson-3.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d2d9f990623f15c0ae7ac608103c33dfe1486d2ed974ac3f40b693bad1a22a7b"}, - {file = "orjson-3.10.7-cp312-none-win32.whl", hash = "sha256:7c4c17f8157bd520cdb7195f75ddbd31671997cbe10aee559c2d613592e7d7eb"}, - {file = "orjson-3.10.7-cp312-none-win_amd64.whl", hash = "sha256:1d9c0e733e02ada3ed6098a10a8ee0052dd55774de3d9110d29868d24b17faa1"}, - {file = "orjson-3.10.7-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:77d325ed866876c0fa6492598ec01fe30e803272a6e8b10e992288b009cbe149"}, - {file = "orjson-3.10.7-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ea2c232deedcb605e853ae1db2cc94f7390ac776743b699b50b071b02bea6fe"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3dcfbede6737fdbef3ce9c37af3fb6142e8e1ebc10336daa05872bfb1d87839c"}, - {file = "orjson-3.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:11748c135f281203f4ee695b7f80bb1358a82a63905f9f0b794769483ea854ad"}, - {file = "orjson-3.10.7-cp313-none-win32.whl", hash = "sha256:a7e19150d215c7a13f39eb787d84db274298d3f83d85463e61d277bbd7f401d2"}, - {file = "orjson-3.10.7-cp313-none-win_amd64.whl", hash = "sha256:eef44224729e9525d5261cc8d28d6b11cafc90e6bd0be2157bde69a52ec83024"}, - {file = "orjson-3.10.7-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6ea2b2258eff652c82652d5e0f02bd5e0463a6a52abb78e49ac288827aaa1469"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430ee4d85841e1483d487e7b81401785a5dfd69db5de01314538f31f8fbf7ee1"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b6146e439af4c2472c56f8540d799a67a81226e11992008cb47e1267a9b3225"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:084e537806b458911137f76097e53ce7bf5806dda33ddf6aaa66a028f8d43a23"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4829cf2195838e3f93b70fd3b4292156fc5e097aac3739859ac0dcc722b27ac0"}, - {file = "orjson-3.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1193b2416cbad1a769f868b1749535d5da47626ac29445803dae7cc64b3f5c98"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:4e6c3da13e5a57e4b3dca2de059f243ebec705857522f188f0180ae88badd354"}, - {file = "orjson-3.10.7-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c31008598424dfbe52ce8c5b47e0752dca918a4fdc4a2a32004efd9fab41d866"}, - {file = "orjson-3.10.7-cp38-none-win32.whl", hash = "sha256:7122a99831f9e7fe977dc45784d3b2edc821c172d545e6420c375e5a935f5a1c"}, - {file = "orjson-3.10.7-cp38-none-win_amd64.whl", hash = "sha256:a763bc0e58504cc803739e7df040685816145a6f3c8a589787084b54ebc9f16e"}, - {file = "orjson-3.10.7-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:e76be12658a6fa376fcd331b1ea4e58f5a06fd0220653450f0d415b8fd0fbe20"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed350d6978d28b92939bfeb1a0570c523f6170efc3f0a0ef1f1df287cd4f4960"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:144888c76f8520e39bfa121b31fd637e18d4cc2f115727865fdf9fa325b10412"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09b2d92fd95ad2402188cf51573acde57eb269eddabaa60f69ea0d733e789fe9"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b24a579123fa884f3a3caadaed7b75eb5715ee2b17ab5c66ac97d29b18fe57f"}, - {file = "orjson-3.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591bcfe7512353bd609875ab38050efe3d55e18934e2f18950c108334b4ff"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f4db56635b58cd1a200b0a23744ff44206ee6aa428185e2b6c4a65b3197abdcd"}, - {file = "orjson-3.10.7-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0fa5886854673222618638c6df7718ea7fe2f3f2384c452c9ccedc70b4a510a5"}, - {file = "orjson-3.10.7-cp39-none-win32.whl", hash = "sha256:8272527d08450ab16eb405f47e0f4ef0e5ff5981c3d82afe0efd25dcbef2bcd2"}, - {file = "orjson-3.10.7-cp39-none-win_amd64.whl", hash = "sha256:974683d4618c0c7dbf4f69c95a979734bf183d0658611760017f6e70a145af58"}, - {file = "orjson-3.10.7.tar.gz", hash = "sha256:75ef0640403f945f3a1f9f6400686560dbfb0fb5b16589ad62cd477043c4eee3"}, + {file = "orjson-3.10.11-cp310-cp310-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:6dade64687f2bd7c090281652fe18f1151292d567a9302b34c2dbb92a3872f1f"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82f07c550a6ccd2b9290849b22316a609023ed851a87ea888c0456485a7d196a"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd9a187742d3ead9df2e49240234d728c67c356516cf4db018833a86f20ec18c"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77b0fed6f209d76c1c39f032a70df2d7acf24b1812ca3e6078fd04e8972685a3"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63fc9d5fe1d4e8868f6aae547a7b8ba0a2e592929245fff61d633f4caccdcdd6"}, + {file = "orjson-3.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65cd3e3bb4fbb4eddc3c1e8dce10dc0b73e808fcb875f9fab40c81903dd9323e"}, + {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f67c570602300c4befbda12d153113b8974a3340fdcf3d6de095ede86c06d92"}, + {file = "orjson-3.10.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f39728c7f7d766f1f5a769ce4d54b5aaa4c3f92d5b84817053cc9995b977acc"}, + {file = "orjson-3.10.11-cp310-none-win32.whl", hash = "sha256:1789d9db7968d805f3d94aae2c25d04014aae3a2fa65b1443117cd462c6da647"}, + {file = "orjson-3.10.11-cp310-none-win_amd64.whl", hash = "sha256:5576b1e5a53a5ba8f8df81872bb0878a112b3ebb1d392155f00f54dd86c83ff6"}, + {file = "orjson-3.10.11-cp311-cp311-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:1444f9cb7c14055d595de1036f74ecd6ce15f04a715e73f33bb6326c9cef01b6"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdec57fe3b4bdebcc08a946db3365630332dbe575125ff3d80a3272ebd0ddafe"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4eed32f33a0ea6ef36ccc1d37f8d17f28a1d6e8eefae5928f76aff8f1df85e67"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80df27dd8697242b904f4ea54820e2d98d3f51f91e97e358fc13359721233e4b"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:705f03cee0cb797256d54de6695ef219e5bc8c8120b6654dd460848d57a9af3d"}, + {file = "orjson-3.10.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03246774131701de8e7059b2e382597da43144a9a7400f178b2a32feafc54bd5"}, + {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8b5759063a6c940a69c728ea70d7c33583991c6982915a839c8da5f957e0103a"}, + {file = "orjson-3.10.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:677f23e32491520eebb19c99bb34675daf5410c449c13416f7f0d93e2cf5f981"}, + {file = "orjson-3.10.11-cp311-none-win32.whl", hash = "sha256:a11225d7b30468dcb099498296ffac36b4673a8398ca30fdaec1e6c20df6aa55"}, + {file = "orjson-3.10.11-cp311-none-win_amd64.whl", hash = "sha256:df8c677df2f9f385fcc85ab859704045fa88d4668bc9991a527c86e710392bec"}, + {file = "orjson-3.10.11-cp312-cp312-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:360a4e2c0943da7c21505e47cf6bd725588962ff1d739b99b14e2f7f3545ba51"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:496e2cb45de21c369079ef2d662670a4892c81573bcc143c4205cae98282ba97"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7dfa8db55c9792d53c5952900c6a919cfa377b4f4534c7a786484a6a4a350c19"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:51f3382415747e0dbda9dade6f1e1a01a9d37f630d8c9049a8ed0e385b7a90c0"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f35a1b9f50a219f470e0e497ca30b285c9f34948d3c8160d5ad3a755d9299433"}, + {file = "orjson-3.10.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f3b7c5803138e67028dde33450e054c87e0703afbe730c105f1fcd873496d5"}, + {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f91d9eb554310472bd09f5347950b24442600594c2edc1421403d7610a0998fd"}, + {file = "orjson-3.10.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dfbb2d460a855c9744bbc8e36f9c3a997c4b27d842f3d5559ed54326e6911f9b"}, + {file = "orjson-3.10.11-cp312-none-win32.whl", hash = "sha256:d4a62c49c506d4d73f59514986cadebb7e8d186ad510c518f439176cf8d5359d"}, + {file = "orjson-3.10.11-cp312-none-win_amd64.whl", hash = "sha256:f1eec3421a558ff7a9b010a6c7effcfa0ade65327a71bb9b02a1c3b77a247284"}, + {file = "orjson-3.10.11-cp313-cp313-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c46294faa4e4d0eb73ab68f1a794d2cbf7bab33b1dda2ac2959ffb7c61591899"}, + {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52e5834d7d6e58a36846e059d00559cb9ed20410664f3ad156cd2cc239a11230"}, + {file = "orjson-3.10.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2fc947e5350fdce548bfc94f434e8760d5cafa97fb9c495d2fef6757aa02ec0"}, + {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0efabbf839388a1dab5b72b5d3baedbd6039ac83f3b55736eb9934ea5494d258"}, + {file = "orjson-3.10.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a3f29634260708c200c4fe148e42b4aae97d7b9fee417fbdd74f8cfc265f15b0"}, + {file = "orjson-3.10.11-cp313-none-win32.whl", hash = "sha256:1a1222ffcee8a09476bbdd5d4f6f33d06d0d6642df2a3d78b7a195ca880d669b"}, + {file = "orjson-3.10.11-cp313-none-win_amd64.whl", hash = "sha256:bc274ac261cc69260913b2d1610760e55d3c0801bb3457ba7b9004420b6b4270"}, + {file = "orjson-3.10.11-cp38-cp38-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:19b3763e8bbf8ad797df6b6b5e0fc7c843ec2e2fc0621398534e0c6400098f87"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1be83a13312e5e58d633580c5eb8d0495ae61f180da2722f20562974188af205"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:afacfd1ab81f46dedd7f6001b6d4e8de23396e4884cd3c3436bd05defb1a6446"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cb4d0bea56bba596723d73f074c420aec3b2e5d7d30698bc56e6048066bd560c"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96ed1de70fcb15d5fed529a656df29f768187628727ee2788344e8a51e1c1350"}, + {file = "orjson-3.10.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bfb30c891b530f3f80e801e3ad82ef150b964e5c38e1fb8482441c69c35c61c"}, + {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d496c74fc2b61341e3cefda7eec21b7854c5f672ee350bc55d9a4997a8a95204"}, + {file = "orjson-3.10.11-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:655a493bac606655db9a47fe94d3d84fc7f3ad766d894197c94ccf0c5408e7d3"}, + {file = "orjson-3.10.11-cp38-none-win32.whl", hash = "sha256:b9546b278c9fb5d45380f4809e11b4dd9844ca7aaf1134024503e134ed226161"}, + {file = "orjson-3.10.11-cp38-none-win_amd64.whl", hash = "sha256:b592597fe551d518f42c5a2eb07422eb475aa8cfdc8c51e6da7054b836b26782"}, + {file = "orjson-3.10.11-cp39-cp39-macosx_10_15_x86_64.macosx_11_0_arm64.macosx_10_15_universal2.whl", hash = "sha256:c95f2ecafe709b4e5c733b5e2768ac569bed308623c85806c395d9cca00e08af"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80c00d4acded0c51c98754fe8218cb49cb854f0f7eb39ea4641b7f71732d2cb7"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:461311b693d3d0a060439aa669c74f3603264d4e7a08faa68c47ae5a863f352d"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52ca832f17d86a78cbab86cdc25f8c13756ebe182b6fc1a97d534051c18a08de"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4c57ea78a753812f528178aa2f1c57da633754c91d2124cb28991dab4c79a54"}, + {file = "orjson-3.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b7fcfc6f7ca046383fb954ba528587e0f9336828b568282b27579c49f8e16aad"}, + {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:86b9dd983857970c29e4c71bb3e95ff085c07d3e83e7c46ebe959bac07ebd80b"}, + {file = "orjson-3.10.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:4d83f87582d223e54efb2242a79547611ba4ebae3af8bae1e80fa9a0af83bb7f"}, + {file = "orjson-3.10.11-cp39-none-win32.whl", hash = "sha256:9fd0ad1c129bc9beb1154c2655f177620b5beaf9a11e0d10bac63ef3fce96950"}, + {file = "orjson-3.10.11-cp39-none-win_amd64.whl", hash = "sha256:10f416b2a017c8bd17f325fb9dee1fb5cdd7a54e814284896b7c3f2763faa017"}, + {file = "orjson-3.10.11.tar.gz", hash = "sha256:e35b6d730de6384d5b2dab5fd23f0d76fae8bbc8c353c2f78210aa5fa4beb3ef"}, ] [[package]] name = "packageurl-python" -version = "0.15.6" +version = "0.16.0" description = "A purl aka. Package URL parser and builder" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packageurl_python-0.15.6-py3-none-any.whl", hash = "sha256:a40210652c89022772a6c8340d6066f7d5dc67132141e5284a4db7a27d0a8ab0"}, - {file = "packageurl_python-0.15.6.tar.gz", hash = "sha256:cbc89afd15d5f4d05db4f1b61297e5b97a43f61f28799f6d282aff467ed2ee96"}, + {file = "packageurl_python-0.16.0-py3-none-any.whl", hash = "sha256:5c3872638b177b0f1cf01c3673017b7b27ebee485693ae12a8bed70fa7fa7c35"}, + {file = "packageurl_python-0.16.0.tar.gz", hash = "sha256:69e3bf8a3932fe9c2400f56aaeb9f86911ecee2f9398dbe1b58ec34340be365d"}, ] [package.extras] @@ -2295,13 +2328,13 @@ test = ["pytest"] [[package]] name = "packaging" -version = "24.1" +version = "23.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -2345,13 +2378,13 @@ numpy = "*" [[package]] name = "pip" -version = "24.2" +version = "24.3.1" description = "The PyPA recommended tool for installing Python packages." optional = false python-versions = ">=3.8" files = [ - {file = "pip-24.2-py3-none-any.whl", hash = "sha256:2cd581cf58ab7fcfca4ce8efa6dcacd0de5bf8d0a3eb9ec927e07405f4d9e2a2"}, - {file = "pip-24.2.tar.gz", hash = "sha256:5b5e490b5e9cb275c879595064adce9ebd31b854e3e803740b72f9ccf34a45b8"}, + {file = "pip-24.3.1-py3-none-any.whl", hash = "sha256:3790624780082365f47549d032f3770eeb2b1e8bd1f7b2e02dace1afa361b4ed"}, + {file = "pip-24.3.1.tar.gz", hash = "sha256:ebcb60557f2aefabc2e0f918751cd24ea0d56d8ec5445fe1807f1d2109660b99"}, ] [[package]] @@ -2573,13 +2606,13 @@ files = [ [[package]] name = "proto-plus" -version = "1.24.0" +version = "1.25.0" description = "Beautiful, Pythonic protocol buffers." optional = false python-versions = ">=3.7" files = [ - {file = "proto-plus-1.24.0.tar.gz", hash = "sha256:30b72a5ecafe4406b0d339db35b56c4059064e69227b8c3bda7462397f966445"}, - {file = "proto_plus-1.24.0-py3-none-any.whl", hash = "sha256:402576830425e5f6ce4c2a6702400ac79897dab0b4343821aa5188b0fab81a12"}, + {file = "proto_plus-1.25.0-py3-none-any.whl", hash = "sha256:c91fc4a65074ade8e458e95ef8bac34d4008daa7cce4a12d6707066fca648961"}, + {file = "proto_plus-1.25.0.tar.gz", hash = "sha256:fbb17f57f7bd05a68b7707e745e26528b0b3c34e378db91eef93912c54982d91"}, ] [package.dependencies] @@ -2590,22 +2623,22 @@ testing = ["google-api-core (>=1.31.5)"] [[package]] name = "protobuf" -version = "5.28.2" +version = "5.28.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.28.2-cp310-abi3-win32.whl", hash = "sha256:eeea10f3dc0ac7e6b4933d32db20662902b4ab81bf28df12218aa389e9c2102d"}, - {file = "protobuf-5.28.2-cp310-abi3-win_amd64.whl", hash = "sha256:2c69461a7fcc8e24be697624c09a839976d82ae75062b11a0972e41fd2cd9132"}, - {file = "protobuf-5.28.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a8b9403fc70764b08d2f593ce44f1d2920c5077bf7d311fefec999f8c40f78b7"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:35cfcb15f213449af7ff6198d6eb5f739c37d7e4f1c09b5d0641babf2cc0c68f"}, - {file = "protobuf-5.28.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:5e8a95246d581eef20471b5d5ba010d55f66740942b95ba9b872d918c459452f"}, - {file = "protobuf-5.28.2-cp38-cp38-win32.whl", hash = "sha256:87317e9bcda04a32f2ee82089a204d3a2f0d3c8aeed16568c7daf4756e4f1fe0"}, - {file = "protobuf-5.28.2-cp38-cp38-win_amd64.whl", hash = "sha256:c0ea0123dac3399a2eeb1a1443d82b7afc9ff40241433296769f7da42d142ec3"}, - {file = "protobuf-5.28.2-cp39-cp39-win32.whl", hash = "sha256:ca53faf29896c526863366a52a8f4d88e69cd04ec9571ed6082fa117fac3ab36"}, - {file = "protobuf-5.28.2-cp39-cp39-win_amd64.whl", hash = "sha256:8ddc60bf374785fb7cb12510b267f59067fa10087325b8e1855b898a0d81d276"}, - {file = "protobuf-5.28.2-py3-none-any.whl", hash = "sha256:52235802093bd8a2811abbe8bf0ab9c5f54cca0a751fdd3f6ac2a21438bffece"}, - {file = "protobuf-5.28.2.tar.gz", hash = "sha256:59379674ff119717404f7454647913787034f03fe7049cbef1d74a97bb4593f0"}, + {file = "protobuf-5.28.3-cp310-abi3-win32.whl", hash = "sha256:0c4eec6f987338617072592b97943fdbe30d019c56126493111cf24344c1cc24"}, + {file = "protobuf-5.28.3-cp310-abi3-win_amd64.whl", hash = "sha256:91fba8f445723fcf400fdbe9ca796b19d3b1242cd873907979b9ed71e4afe868"}, + {file = "protobuf-5.28.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a3f6857551e53ce35e60b403b8a27b0295f7d6eb63d10484f12bc6879c715687"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:3fa2de6b8b29d12c61911505d893afe7320ce7ccba4df913e2971461fa36d584"}, + {file = "protobuf-5.28.3-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:712319fbdddb46f21abb66cd33cb9e491a5763b2febd8f228251add221981135"}, + {file = "protobuf-5.28.3-cp38-cp38-win32.whl", hash = "sha256:3e6101d095dfd119513cde7259aa703d16c6bbdfae2554dfe5cfdbe94e32d548"}, + {file = "protobuf-5.28.3-cp38-cp38-win_amd64.whl", hash = "sha256:27b246b3723692bf1068d5734ddaf2fccc2cdd6e0c9b47fe099244d80200593b"}, + {file = "protobuf-5.28.3-cp39-cp39-win32.whl", hash = "sha256:135658402f71bbd49500322c0f736145731b16fc79dc8f367ab544a17eab4535"}, + {file = "protobuf-5.28.3-cp39-cp39-win_amd64.whl", hash = "sha256:70585a70fc2dd4818c51287ceef5bdba6387f88a578c86d47bb34669b5552c36"}, + {file = "protobuf-5.28.3-py3-none-any.whl", hash = "sha256:cee1757663fa32a1ee673434fcf3bf24dd54763c79690201208bafec62f19eed"}, + {file = "protobuf-5.28.3.tar.gz", hash = "sha256:64badbc49180a5e401f373f9ce7ab1d18b63f7dd4a9cdc43c92b9f0b481cef7b"}, ] [[package]] @@ -2884,13 +2917,13 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.5.2" +version = "2.6.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.5.2-py3-none-any.whl", hash = "sha256:2c912e55fd5794a59bf8c832b9de832dcfdf4778d79ff79b708744eed499a907"}, - {file = "pydantic_settings-2.5.2.tar.gz", hash = "sha256:f90b139682bee4d2065273d5185d71d37ea46cfe57e1b5ae184fc6a0b2484ca0"}, + {file = "pydantic_settings-2.6.1-py3-none-any.whl", hash = "sha256:7fb0637c786a558d3103436278a7c4f1cfd29ba8973238a50c5bb9a55387da87"}, + {file = "pydantic_settings-2.6.1.tar.gz", hash = "sha256:e0f92546d8a9923cb8941689abf85d6601a8c19a23e97a34b2964a2e3f813ca0"}, ] [package.dependencies] @@ -2918,13 +2951,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyparsing" -version = "3.1.4" +version = "3.2.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.6.8" +python-versions = ">=3.9" files = [ - {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, - {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, + {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"}, + {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"}, ] [package.extras] @@ -2932,22 +2965,22 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyproject-api" -version = "1.8.0" +version = "1.6.1" description = "API to interact with the python pyproject.toml based projects" optional = false python-versions = ">=3.8" files = [ - {file = "pyproject_api-1.8.0-py3-none-any.whl", hash = "sha256:3d7d347a047afe796fd5d1885b1e391ba29be7169bd2f102fcd378f04273d228"}, - {file = "pyproject_api-1.8.0.tar.gz", hash = "sha256:77b8049f2feb5d33eefcc21b57f1e279636277a8ac8ad6b5871037b243778496"}, + {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, + {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, ] [package.dependencies] -packaging = ">=24.1" +packaging = ">=23.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx-autodoc-typehints (>=2.4.1)"] -testing = ["covdefaults (>=2.3)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "setuptools (>=75.1)"] +docs = ["furo (>=2023.8.19)", "sphinx (<7.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "setuptools (>=68.1.2)", "wheel (>=0.41.2)"] [[package]] name = "pytest" @@ -3259,13 +3292,13 @@ files = [ [[package]] name = "rich" -version = "13.9.2" +version = "13.9.4" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.8.0" files = [ - {file = "rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1"}, - {file = "rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c"}, + {file = "rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90"}, + {file = "rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098"}, ] [package.dependencies] @@ -3278,114 +3311,114 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.20.0" +version = "0.20.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3ad0fda1635f8439cde85c700f964b23ed5fc2d28016b32b9ee5fe30da5c84e2"}, - {file = "rpds_py-0.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9bb4a0d90fdb03437c109a17eade42dfbf6190408f29b2744114d11586611d6f"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6377e647bbfd0a0b159fe557f2c6c602c159fc752fa316572f012fc0bf67150"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb851b7df9dda52dc1415ebee12362047ce771fc36914586b2e9fcbd7d293b3e"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e0f80b739e5a8f54837be5d5c924483996b603d5502bfff79bf33da06164ee2"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a8c94dad2e45324fc74dce25e1645d4d14df9a4e54a30fa0ae8bad9a63928e3"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8e604fe73ba048c06085beaf51147eaec7df856824bfe7b98657cf436623daf"}, - {file = "rpds_py-0.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df3de6b7726b52966edf29663e57306b23ef775faf0ac01a3e9f4012a24a4140"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf258ede5bc22a45c8e726b29835b9303c285ab46fc7c3a4cc770736b5304c9f"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:55fea87029cded5df854ca7e192ec7bdb7ecd1d9a3f63d5c4eb09148acf4a7ce"}, - {file = "rpds_py-0.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ae94bd0b2f02c28e199e9bc51485d0c5601f58780636185660f86bf80c89af94"}, - {file = "rpds_py-0.20.0-cp310-none-win32.whl", hash = "sha256:28527c685f237c05445efec62426d285e47a58fb05ba0090a4340b73ecda6dee"}, - {file = "rpds_py-0.20.0-cp310-none-win_amd64.whl", hash = "sha256:238a2d5b1cad28cdc6ed15faf93a998336eb041c4e440dd7f902528b8891b399"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac2f4f7a98934c2ed6505aead07b979e6f999389f16b714448fb39bbaa86a489"}, - {file = "rpds_py-0.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:220002c1b846db9afd83371d08d239fdc865e8f8c5795bbaec20916a76db3318"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d7919548df3f25374a1f5d01fbcd38dacab338ef5f33e044744b5c36729c8db"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:758406267907b3781beee0f0edfe4a179fbd97c0be2e9b1154d7f0a1279cf8e5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d61339e9f84a3f0767b1995adfb171a0d00a1185192718a17af6e124728e0f5"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1259c7b3705ac0a0bd38197565a5d603218591d3f6cee6e614e380b6ba61c6f6"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c1dc0f53856b9cc9a0ccca0a7cc61d3d20a7088201c0937f3f4048c1718a209"}, - {file = "rpds_py-0.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7e60cb630f674a31f0368ed32b2a6b4331b8350d67de53c0359992444b116dd3"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:dbe982f38565bb50cb7fb061ebf762c2f254ca3d8c20d4006878766e84266272"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:514b3293b64187172bc77c8fb0cdae26981618021053b30d8371c3a902d4d5ad"}, - {file = "rpds_py-0.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d0a26ffe9d4dd35e4dfdd1e71f46401cff0181c75ac174711ccff0459135fa58"}, - {file = "rpds_py-0.20.0-cp311-none-win32.whl", hash = "sha256:89c19a494bf3ad08c1da49445cc5d13d8fefc265f48ee7e7556839acdacf69d0"}, - {file = "rpds_py-0.20.0-cp311-none-win_amd64.whl", hash = "sha256:c638144ce971df84650d3ed0096e2ae7af8e62ecbbb7b201c8935c370df00a2c"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a84ab91cbe7aab97f7446652d0ed37d35b68a465aeef8fc41932a9d7eee2c1a6"}, - {file = "rpds_py-0.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:56e27147a5a4c2c21633ff8475d185734c0e4befd1c989b5b95a5d0db699b21b"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2580b0c34583b85efec8c5c5ec9edf2dfe817330cc882ee972ae650e7b5ef739"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b80d4a7900cf6b66bb9cee5c352b2d708e29e5a37fe9bf784fa97fc11504bf6c"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50eccbf054e62a7b2209b28dc7a22d6254860209d6753e6b78cfaeb0075d7bee"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:49a8063ea4296b3a7e81a5dfb8f7b2d73f0b1c20c2af401fb0cdf22e14711a96"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea438162a9fcbee3ecf36c23e6c68237479f89f962f82dae83dc15feeceb37e4"}, - {file = "rpds_py-0.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:18d7585c463087bddcfa74c2ba267339f14f2515158ac4db30b1f9cbdb62c8ef"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d4c7d1a051eeb39f5c9547e82ea27cbcc28338482242e3e0b7768033cb083821"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e4df1e3b3bec320790f699890d41c59d250f6beda159ea3c44c3f5bac1976940"}, - {file = "rpds_py-0.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2cf126d33a91ee6eedc7f3197b53e87a2acdac63602c0f03a02dd69e4b138174"}, - {file = "rpds_py-0.20.0-cp312-none-win32.whl", hash = "sha256:8bc7690f7caee50b04a79bf017a8d020c1f48c2a1077ffe172abec59870f1139"}, - {file = "rpds_py-0.20.0-cp312-none-win_amd64.whl", hash = "sha256:0e13e6952ef264c40587d510ad676a988df19adea20444c2b295e536457bc585"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa9a0521aeca7d4941499a73ad7d4f8ffa3d1affc50b9ea11d992cd7eff18a29"}, - {file = "rpds_py-0.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1f1d51eccb7e6c32ae89243cb352389228ea62f89cd80823ea7dd1b98e0b91"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a86a9b96070674fc88b6f9f71a97d2c1d3e5165574615d1f9168ecba4cecb24"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c8ef2ebf76df43f5750b46851ed1cdf8f109d7787ca40035fe19fbdc1acc5a7"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b25f024b421d5859d156750ea9a65651793d51b76a2e9238c05c9d5f203a9"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57eb94a8c16ab08fef6404301c38318e2c5a32216bf5de453e2714c964c125c8"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1940dae14e715e2e02dfd5b0f64a52e8374a517a1e531ad9412319dc3ac7879"}, - {file = "rpds_py-0.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d20277fd62e1b992a50c43f13fbe13277a31f8c9f70d59759c88f644d66c619f"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:06db23d43f26478303e954c34c75182356ca9aa7797d22c5345b16871ab9c45c"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2a5db5397d82fa847e4c624b0c98fe59d2d9b7cf0ce6de09e4d2e80f8f5b3f2"}, - {file = "rpds_py-0.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a35df9f5548fd79cb2f52d27182108c3e6641a4feb0f39067911bf2adaa3e57"}, - {file = "rpds_py-0.20.0-cp313-none-win32.whl", hash = "sha256:fd2d84f40633bc475ef2d5490b9c19543fbf18596dcb1b291e3a12ea5d722f7a"}, - {file = "rpds_py-0.20.0-cp313-none-win_amd64.whl", hash = "sha256:9bc2d153989e3216b0559251b0c260cfd168ec78b1fac33dd485750a228db5a2"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:f2fbf7db2012d4876fb0d66b5b9ba6591197b0f165db8d99371d976546472a24"}, - {file = "rpds_py-0.20.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1e5f3cd7397c8f86c8cc72d5a791071431c108edd79872cdd96e00abd8497d29"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce9845054c13696f7af7f2b353e6b4f676dab1b4b215d7fe5e05c6f8bb06f965"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c3e130fd0ec56cb76eb49ef52faead8ff09d13f4527e9b0c400307ff72b408e1"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4b16aa0107ecb512b568244ef461f27697164d9a68d8b35090e9b0c1c8b27752"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa7f429242aae2947246587d2964fad750b79e8c233a2367f71b554e9447949c"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0fc424a5842a11e28956e69395fbbeab2c97c42253169d87e90aac2886d751"}, - {file = "rpds_py-0.20.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b8c00a3b1e70c1d3891f0db1b05292747f0dbcfb49c43f9244d04c70fbc40eb8"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:40ce74fc86ee4645d0a225498d091d8bc61f39b709ebef8204cb8b5a464d3c0e"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4fe84294c7019456e56d93e8ababdad5a329cd25975be749c3f5f558abb48253"}, - {file = "rpds_py-0.20.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:338ca4539aad4ce70a656e5187a3a31c5204f261aef9f6ab50e50bcdffaf050a"}, - {file = "rpds_py-0.20.0-cp38-none-win32.whl", hash = "sha256:54b43a2b07db18314669092bb2de584524d1ef414588780261e31e85846c26a5"}, - {file = "rpds_py-0.20.0-cp38-none-win_amd64.whl", hash = "sha256:a1862d2d7ce1674cffa6d186d53ca95c6e17ed2b06b3f4c476173565c862d232"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:3fde368e9140312b6e8b6c09fb9f8c8c2f00999d1823403ae90cc00480221b22"}, - {file = "rpds_py-0.20.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9824fb430c9cf9af743cf7aaf6707bf14323fb51ee74425c380f4c846ea70789"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11ef6ce74616342888b69878d45e9f779b95d4bd48b382a229fe624a409b72c5"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c52d3f2f82b763a24ef52f5d24358553e8403ce05f893b5347098014f2d9eff2"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d35cef91e59ebbeaa45214861874bc6f19eb35de96db73e467a8358d701a96c"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d72278a30111e5b5525c1dd96120d9e958464316f55adb030433ea905866f4de"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda"}, - {file = "rpds_py-0.20.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6632f2d04f15d1bd6fe0eedd3b86d9061b836ddca4c03d5cf5c7e9e6b7c14580"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d0b67d87bb45ed1cd020e8fbf2307d449b68abc45402fe1a4ac9e46c3c8b192b"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec31a99ca63bf3cd7f1a5ac9fe95c5e2d060d3c768a09bc1d16e235840861420"}, - {file = "rpds_py-0.20.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22e6c9976e38f4d8c4a63bd8a8edac5307dffd3ee7e6026d97f3cc3a2dc02a0b"}, - {file = "rpds_py-0.20.0-cp39-none-win32.whl", hash = "sha256:569b3ea770c2717b730b61998b6c54996adee3cef69fc28d444f3e7920313cf7"}, - {file = "rpds_py-0.20.0-cp39-none-win_amd64.whl", hash = "sha256:e6900ecdd50ce0facf703f7a00df12374b74bbc8ad9fe0f6559947fb20f82364"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:617c7357272c67696fd052811e352ac54ed1d9b49ab370261a80d3b6ce385045"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9426133526f69fcaba6e42146b4e12d6bc6c839b8b555097020e2b78ce908dcc"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:deb62214c42a261cb3eb04d474f7155279c1a8a8c30ac89b7dcb1721d92c3c02"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcaeb7b57f1a1e071ebd748984359fef83ecb026325b9d4ca847c95bc7311c92"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d454b8749b4bd70dd0a79f428731ee263fa6995f83ccb8bada706e8d1d3ff89d"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d807dc2051abe041b6649681dce568f8e10668e3c1c6543ebae58f2d7e617855"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c20f0ddeb6e29126d45f89206b8291352b8c5b44384e78a6499d68b52ae511"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b7f19250ceef892adf27f0399b9e5afad019288e9be756d6919cb58892129f51"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1ed4749a08379555cebf4650453f14452eaa9c43d0a95c49db50c18b7da075"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:dcedf0b42bcb4cfff4101d7771a10532415a6106062f005ab97d1d0ab5681c60"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:39ed0d010457a78f54090fafb5d108501b5aa5604cc22408fc1c0c77eac14344"}, - {file = "rpds_py-0.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bb273176be34a746bdac0b0d7e4e2c467323d13640b736c4c477881a3220a989"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f918a1a130a6dfe1d7fe0f105064141342e7dd1611f2e6a21cd2f5c8cb1cfb3e"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f60012a73aa396be721558caa3a6fd49b3dd0033d1675c6d59c4502e870fcf0c"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d2b1ad682a3dfda2a4e8ad8572f3100f95fad98cb99faf37ff0ddfe9cbf9d03"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:614fdafe9f5f19c63ea02817fa4861c606a59a604a77c8cdef5aa01d28b97921"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa518bcd7600c584bf42e6617ee8132869e877db2f76bcdc281ec6a4113a53ab"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0475242f447cc6cb8a9dd486d68b2ef7fbee84427124c232bff5f63b1fe11e5"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f90a4cd061914a60bd51c68bcb4357086991bd0bb93d8aa66a6da7701370708f"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:def7400461c3a3f26e49078302e1c1b38f6752342c77e3cf72ce91ca69fb1bc1"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:65794e4048ee837494aea3c21a28ad5fc080994dfba5b036cf84de37f7ad5074"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:faefcc78f53a88f3076b7f8be0a8f8d35133a3ecf7f3770895c25f8813460f08"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:5b4f105deeffa28bbcdff6c49b34e74903139afa690e35d2d9e3c2c2fba18cec"}, - {file = "rpds_py-0.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdfc3a892927458d98f3d55428ae46b921d1f7543b89382fdb483f5640daaec8"}, - {file = "rpds_py-0.20.0.tar.gz", hash = "sha256:d72a210824facfdaf8768cf2d7ca25a042c30320b3020de2fa04640920d4e121"}, + {file = "rpds_py-0.20.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a649dfd735fff086e8a9d0503a9f0c7d01b7912a333c7ae77e1515c08c146dad"}, + {file = "rpds_py-0.20.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f16bc1334853e91ddaaa1217045dd7be166170beec337576818461268a3de67f"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14511a539afee6f9ab492b543060c7491c99924314977a55c98bfa2ee29ce78c"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ccb8ac2d3c71cda472b75af42818981bdacf48d2e21c36331b50b4f16930163"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c142b88039b92e7e0cb2552e8967077e3179b22359e945574f5e2764c3953dcf"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f19169781dddae7478a32301b499b2858bc52fc45a112955e798ee307e294977"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13c56de6518e14b9bf6edde23c4c39dac5b48dcf04160ea7bce8fca8397cdf86"}, + {file = "rpds_py-0.20.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:925d176a549f4832c6f69fa6026071294ab5910e82a0fe6c6228fce17b0706bd"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:78f0b6877bfce7a3d1ff150391354a410c55d3cdce386f862926a4958ad5ab7e"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3dd645e2b0dcb0fd05bf58e2e54c13875847687d0b71941ad2e757e5d89d4356"}, + {file = "rpds_py-0.20.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4f676e21db2f8c72ff0936f895271e7a700aa1f8d31b40e4e43442ba94973899"}, + {file = "rpds_py-0.20.1-cp310-none-win32.whl", hash = "sha256:648386ddd1e19b4a6abab69139b002bc49ebf065b596119f8f37c38e9ecee8ff"}, + {file = "rpds_py-0.20.1-cp310-none-win_amd64.whl", hash = "sha256:d9ecb51120de61e4604650666d1f2b68444d46ae18fd492245a08f53ad2b7711"}, + {file = "rpds_py-0.20.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:762703bdd2b30983c1d9e62b4c88664df4a8a4d5ec0e9253b0231171f18f6d75"}, + {file = "rpds_py-0.20.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0b581f47257a9fce535c4567782a8976002d6b8afa2c39ff616edf87cbeff712"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:842c19a6ce894493563c3bd00d81d5100e8e57d70209e84d5491940fdb8b9e3a"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42cbde7789f5c0bcd6816cb29808e36c01b960fb5d29f11e052215aa85497c93"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c8e9340ce5a52f95fa7d3b552b35c7e8f3874d74a03a8a69279fd5fca5dc751"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ba6f89cac95c0900d932c9efb7f0fb6ca47f6687feec41abcb1bd5e2bd45535"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a916087371afd9648e1962e67403c53f9c49ca47b9680adbeef79da3a7811b0"}, + {file = "rpds_py-0.20.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:200a23239781f46149e6a415f1e870c5ef1e712939fe8fa63035cd053ac2638e"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:58b1d5dd591973d426cbb2da5e27ba0339209832b2f3315928c9790e13f159e8"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:6b73c67850ca7cae0f6c56f71e356d7e9fa25958d3e18a64927c2d930859b8e4"}, + {file = "rpds_py-0.20.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d8761c3c891cc51e90bc9926d6d2f59b27beaf86c74622c8979380a29cc23ac3"}, + {file = "rpds_py-0.20.1-cp311-none-win32.whl", hash = "sha256:cd945871335a639275eee904caef90041568ce3b42f402c6959b460d25ae8732"}, + {file = "rpds_py-0.20.1-cp311-none-win_amd64.whl", hash = "sha256:7e21b7031e17c6b0e445f42ccc77f79a97e2687023c5746bfb7a9e45e0921b84"}, + {file = "rpds_py-0.20.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:36785be22066966a27348444b40389f8444671630063edfb1a2eb04318721e17"}, + {file = "rpds_py-0.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:142c0a5124d9bd0e2976089484af5c74f47bd3298f2ed651ef54ea728d2ea42c"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbddc10776ca7ebf2a299c41a4dde8ea0d8e3547bfd731cb87af2e8f5bf8962d"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:15a842bb369e00295392e7ce192de9dcbf136954614124a667f9f9f17d6a216f"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:be5ef2f1fc586a7372bfc355986226484e06d1dc4f9402539872c8bb99e34b01"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbcf360c9e3399b056a238523146ea77eeb2a596ce263b8814c900263e46031a"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd27a66740ffd621d20b9a2f2b5ee4129a56e27bfb9458a3bcc2e45794c96cb"}, + {file = "rpds_py-0.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0b937b2a1988f184a3e9e577adaa8aede21ec0b38320d6009e02bd026db04fa"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6889469bfdc1eddf489729b471303739bf04555bb151fe8875931f8564309afc"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:19b73643c802f4eaf13d97f7855d0fb527fbc92ab7013c4ad0e13a6ae0ed23bd"}, + {file = "rpds_py-0.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3c6afcf2338e7f374e8edc765c79fbcb4061d02b15dd5f8f314a4af2bdc7feb5"}, + {file = "rpds_py-0.20.1-cp312-none-win32.whl", hash = "sha256:dc73505153798c6f74854aba69cc75953888cf9866465196889c7cdd351e720c"}, + {file = "rpds_py-0.20.1-cp312-none-win_amd64.whl", hash = "sha256:8bbe951244a838a51289ee53a6bae3a07f26d4e179b96fc7ddd3301caf0518eb"}, + {file = "rpds_py-0.20.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6ca91093a4a8da4afae7fe6a222c3b53ee4eef433ebfee4d54978a103435159e"}, + {file = "rpds_py-0.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b9c2fe36d1f758b28121bef29ed1dee9b7a2453e997528e7d1ac99b94892527c"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f009c69bc8c53db5dfab72ac760895dc1f2bc1b62ab7408b253c8d1ec52459fc"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6740a3e8d43a32629bb9b009017ea5b9e713b7210ba48ac8d4cb6d99d86c8ee8"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32b922e13d4c0080d03e7b62991ad7f5007d9cd74e239c4b16bc85ae8b70252d"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe00a9057d100e69b4ae4a094203a708d65b0f345ed546fdef86498bf5390982"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49fe9b04b6fa685bd39237d45fad89ba19e9163a1ccaa16611a812e682913496"}, + {file = "rpds_py-0.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa7ac11e294304e615b43f8c441fee5d40094275ed7311f3420d805fde9b07b4"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aa97af1558a9bef4025f8f5d8c60d712e0a3b13a2fe875511defc6ee77a1ab7"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:483b29f6f7ffa6af845107d4efe2e3fa8fb2693de8657bc1849f674296ff6a5a"}, + {file = "rpds_py-0.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:37fe0f12aebb6a0e3e17bb4cd356b1286d2d18d2e93b2d39fe647138458b4bcb"}, + {file = "rpds_py-0.20.1-cp313-none-win32.whl", hash = "sha256:a624cc00ef2158e04188df5e3016385b9353638139a06fb77057b3498f794782"}, + {file = "rpds_py-0.20.1-cp313-none-win_amd64.whl", hash = "sha256:b71b8666eeea69d6363248822078c075bac6ed135faa9216aa85f295ff009b1e"}, + {file = "rpds_py-0.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5b48e790e0355865197ad0aca8cde3d8ede347831e1959e158369eb3493d2191"}, + {file = "rpds_py-0.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3e310838a5801795207c66c73ea903deda321e6146d6f282e85fa7e3e4854804"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249280b870e6a42c0d972339e9cc22ee98730a99cd7f2f727549af80dd5a963"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79059d67bea28b53d255c1437b25391653263f0e69cd7dec170d778fdbca95e"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b431c777c9653e569986ecf69ff4a5dba281cded16043d348bf9ba505486f36"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da584ff96ec95e97925174eb8237e32f626e7a1a97888cdd27ee2f1f24dd0ad8"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a0629ec053fc013808a85178524e3cb63a61dbc35b22499870194a63578fb9"}, + {file = "rpds_py-0.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fbf15aff64a163db29a91ed0868af181d6f68ec1a3a7d5afcfe4501252840bad"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:07924c1b938798797d60c6308fa8ad3b3f0201802f82e4a2c41bb3fafb44cc28"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4a5a844f68776a7715ecb30843b453f07ac89bad393431efbf7accca3ef599c1"}, + {file = "rpds_py-0.20.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:518d2ca43c358929bf08f9079b617f1c2ca6e8848f83c1225c88caeac46e6cbc"}, + {file = "rpds_py-0.20.1-cp38-none-win32.whl", hash = "sha256:3aea7eed3e55119635a74bbeb80b35e776bafccb70d97e8ff838816c124539f1"}, + {file = "rpds_py-0.20.1-cp38-none-win_amd64.whl", hash = "sha256:7dca7081e9a0c3b6490a145593f6fe3173a94197f2cb9891183ef75e9d64c425"}, + {file = "rpds_py-0.20.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:b41b6321805c472f66990c2849e152aff7bc359eb92f781e3f606609eac877ad"}, + {file = "rpds_py-0.20.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a90c373ea2975519b58dece25853dbcb9779b05cc46b4819cb1917e3b3215b6"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16d4477bcb9fbbd7b5b0e4a5d9b493e42026c0bf1f06f723a9353f5153e75d30"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84b8382a90539910b53a6307f7c35697bc7e6ffb25d9c1d4e998a13e842a5e83"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4888e117dd41b9d34194d9e31631af70d3d526efc363085e3089ab1a62c32ed1"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5265505b3d61a0f56618c9b941dc54dc334dc6e660f1592d112cd103d914a6db"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e75ba609dba23f2c95b776efb9dd3f0b78a76a151e96f96cc5b6b1b0004de66f"}, + {file = "rpds_py-0.20.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1791ff70bc975b098fe6ecf04356a10e9e2bd7dc21fa7351c1742fdeb9b4966f"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d126b52e4a473d40232ec2052a8b232270ed1f8c9571aaf33f73a14cc298c24f"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c14937af98c4cc362a1d4374806204dd51b1e12dded1ae30645c298e5a5c4cb1"}, + {file = "rpds_py-0.20.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3d089d0b88996df627693639d123c8158cff41c0651f646cd8fd292c7da90eaf"}, + {file = "rpds_py-0.20.1-cp39-none-win32.whl", hash = "sha256:653647b8838cf83b2e7e6a0364f49af96deec64d2a6578324db58380cff82aca"}, + {file = "rpds_py-0.20.1-cp39-none-win_amd64.whl", hash = "sha256:fa41a64ac5b08b292906e248549ab48b69c5428f3987b09689ab2441f267d04d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a07ced2b22f0cf0b55a6a510078174c31b6d8544f3bc00c2bcee52b3d613f74"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:68cb0a499f2c4a088fd2f521453e22ed3527154136a855c62e148b7883b99f9a"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa3060d885657abc549b2a0f8e1b79699290e5d83845141717c6c90c2df38311"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:95f3b65d2392e1c5cec27cff08fdc0080270d5a1a4b2ea1d51d5f4a2620ff08d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2cc3712a4b0b76a1d45a9302dd2f53ff339614b1c29603a911318f2357b04dd2"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d4eea0761e37485c9b81400437adb11c40e13ef513375bbd6973e34100aeb06"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f5179583d7a6cdb981151dd349786cbc318bab54963a192692d945dd3f6435d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fbb0ffc754490aff6dabbf28064be47f0f9ca0b9755976f945214965b3ace7e"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:a94e52537a0e0a85429eda9e49f272ada715506d3b2431f64b8a3e34eb5f3e75"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:92b68b79c0da2a980b1c4197e56ac3dd0c8a149b4603747c4378914a68706979"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:93da1d3db08a827eda74356f9f58884adb254e59b6664f64cc04cdff2cc19b0d"}, + {file = "rpds_py-0.20.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:754bbed1a4ca48479e9d4182a561d001bbf81543876cdded6f695ec3d465846b"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ca449520e7484534a2a44faf629362cae62b660601432d04c482283c47eaebab"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9c4cb04a16b0f199a8c9bf807269b2f63b7b5b11425e4a6bd44bd6961d28282c"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb63804105143c7e24cee7db89e37cb3f3941f8e80c4379a0b355c52a52b6780"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:55cd1fa4ecfa6d9f14fbd97ac24803e6f73e897c738f771a9fe038f2f11ff07c"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f8f741b6292c86059ed175d80eefa80997125b7c478fb8769fd9ac8943a16c0"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fc212779bf8411667234b3cdd34d53de6c2b8b8b958e1e12cb473a5f367c338"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ad56edabcdb428c2e33bbf24f255fe2b43253b7d13a2cdbf05de955217313e6"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0a3a1e9ee9728b2c1734f65d6a1d376c6f2f6fdcc13bb007a08cc4b1ff576dc5"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e13de156137b7095442b288e72f33503a469aa1980ed856b43c353ac86390519"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:07f59760ef99f31422c49038964b31c4dfcfeb5d2384ebfc71058a7c9adae2d2"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:59240685e7da61fb78f65a9f07f8108e36a83317c53f7b276b4175dc44151684"}, + {file = "rpds_py-0.20.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:83cba698cfb3c2c5a7c3c6bac12fe6c6a51aae69513726be6411076185a8b24a"}, + {file = "rpds_py-0.20.1.tar.gz", hash = "sha256:e1791c4aabd117653530dccd24108fa03cc6baf21f58b950d0a73c3b3b29a350"}, ] [[package]] @@ -3454,60 +3487,68 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.35" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:67219632be22f14750f0d1c70e62f204ba69d28f62fd6432ba05ab295853de9b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4668bd8faf7e5b71c0319407b608f278f279668f358857dbfd10ef1954ac9f90"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb8bea573863762bbf45d1e13f87c2d2fd32cee2dbd50d050f83f87429c9e1ea"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f552023710d4b93d8fb29a91fadf97de89c5926c6bd758897875435f2a939f33"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:016b2e665f778f13d3c438651dd4de244214b527a275e0acf1d44c05bc6026a9"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7befc148de64b6060937231cbff8d01ccf0bfd75aa26383ffdf8d82b12ec04ff"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win32.whl", hash = "sha256:22b83aed390e3099584b839b93f80a0f4a95ee7f48270c97c90acd40ee646f0b"}, - {file = "SQLAlchemy-2.0.35-cp310-cp310-win_amd64.whl", hash = "sha256:a29762cd3d116585278ffb2e5b8cc311fb095ea278b96feef28d0b423154858e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e21f66748ab725ade40fa7af8ec8b5019c68ab00b929f6643e1b1af461eddb60"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8a6219108a15fc6d24de499d0d515c7235c617b2540d97116b663dade1a54d62"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:042622a5306c23b972192283f4e22372da3b8ddf5f7aac1cc5d9c9b222ab3ff6"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:627dee0c280eea91aed87b20a1f849e9ae2fe719d52cbf847c0e0ea34464b3f7"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4fdcd72a789c1c31ed242fd8c1bcd9ea186a98ee8e5408a50e610edfef980d71"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:89b64cd8898a3a6f642db4eb7b26d1b28a497d4022eccd7717ca066823e9fb01"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win32.whl", hash = "sha256:6a93c5a0dfe8d34951e8a6f499a9479ffb9258123551fa007fc708ae2ac2bc5e"}, - {file = "SQLAlchemy-2.0.35-cp311-cp311-win_amd64.whl", hash = "sha256:c68fe3fcde03920c46697585620135b4ecfdfc1ed23e75cc2c2ae9f8502c10b8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:eb60b026d8ad0c97917cb81d3662d0b39b8ff1335e3fabb24984c6acd0c900a2"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6921ee01caf375363be5e9ae70d08ce7ca9d7e0e8983183080211a062d299468"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cdf1a0dbe5ced887a9b127da4ffd7354e9c1a3b9bb330dce84df6b70ccb3a8d"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93a71c8601e823236ac0e5d087e4f397874a421017b3318fd92c0b14acf2b6db"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e04b622bb8a88f10e439084486f2f6349bf4d50605ac3e445869c7ea5cf0fa8c"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1b56961e2d31389aaadf4906d453859f35302b4eb818d34a26fab72596076bb8"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win32.whl", hash = "sha256:0f9f3f9a3763b9c4deb8c5d09c4cc52ffe49f9876af41cc1b2ad0138878453cf"}, - {file = "SQLAlchemy-2.0.35-cp312-cp312-win_amd64.whl", hash = "sha256:25b0f63e7fcc2a6290cb5f7f5b4fc4047843504983a28856ce9b35d8f7de03cc"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f021d334f2ca692523aaf7bbf7592ceff70c8594fad853416a81d66b35e3abf9"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05c3f58cf91683102f2f0265c0db3bd3892e9eedabe059720492dbaa4f922da1"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:032d979ce77a6c2432653322ba4cbeabf5a6837f704d16fa38b5a05d8e21fa00"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:2e795c2f7d7249b75bb5f479b432a51b59041580d20599d4e112b5f2046437a3"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:cc32b2990fc34380ec2f6195f33a76b6cdaa9eecf09f0c9404b74fc120aef36f"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win32.whl", hash = "sha256:9509c4123491d0e63fb5e16199e09f8e262066e58903e84615c301dde8fa2e87"}, - {file = "SQLAlchemy-2.0.35-cp37-cp37m-win_amd64.whl", hash = "sha256:3655af10ebcc0f1e4e06c5900bb33e080d6a1fa4228f502121f28a3b1753cde5"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4c31943b61ed8fdd63dfd12ccc919f2bf95eefca133767db6fbbd15da62078ec"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a62dd5d7cc8626a3634208df458c5fe4f21200d96a74d122c83bc2015b333bc1"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0630774b0977804fba4b6bbea6852ab56c14965a2b0c7fc7282c5f7d90a1ae72"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d625eddf7efeba2abfd9c014a22c0f6b3796e0ffb48f5d5ab106568ef01ff5a"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ada603db10bb865bbe591939de854faf2c60f43c9b763e90f653224138f910d9"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c41411e192f8d3ea39ea70e0fae48762cd11a2244e03751a98bd3c0ca9a4e936"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win32.whl", hash = "sha256:d299797d75cd747e7797b1b41817111406b8b10a4f88b6e8fe5b5e59598b43b0"}, - {file = "SQLAlchemy-2.0.35-cp38-cp38-win_amd64.whl", hash = "sha256:0375a141e1c0878103eb3d719eb6d5aa444b490c96f3fedab8471c7f6ffe70ee"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ccae5de2a0140d8be6838c331604f91d6fafd0735dbdcee1ac78fc8fbaba76b4"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2a275a806f73e849e1c309ac11108ea1a14cd7058577aba962cd7190e27c9e3c"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:732e026240cdd1c1b2e3ac515c7a23820430ed94292ce33806a95869c46bd139"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:890da8cd1941fa3dab28c5bac3b9da8502e7e366f895b3b8e500896f12f94d11"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c0d8326269dbf944b9201911b0d9f3dc524d64779a07518199a58384c3d37a44"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b76d63495b0508ab9fc23f8152bac63205d2a704cd009a2b0722f4c8e0cba8e0"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win32.whl", hash = "sha256:69683e02e8a9de37f17985905a5eca18ad651bf592314b4d3d799029797d0eb3"}, - {file = "SQLAlchemy-2.0.35-cp39-cp39-win_amd64.whl", hash = "sha256:aee110e4ef3c528f3abbc3c2018c121e708938adeeff9006428dd7c8555e9b3f"}, - {file = "SQLAlchemy-2.0.35-py3-none-any.whl", hash = "sha256:2ab3f0336c0387662ce6221ad30ab3a5e6499aab01b9790879b6578fd9b8faa1"}, - {file = "sqlalchemy-2.0.35.tar.gz", hash = "sha256:e11d7ea4d24f0a262bccf9a7cd6284c976c5369dac21db237cff59586045ab9f"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -3520,7 +3561,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -3541,13 +3582,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.38.6" +version = "0.41.2" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.38.6-py3-none-any.whl", hash = "sha256:4517a1409e2e73ee4951214ba012052b9e16f60e90d73cfb06192c19203bbb05"}, - {file = "starlette-0.38.6.tar.gz", hash = "sha256:863a1588f5574e70a821dadefb41e4881ea451a47a3cd1b4df359d4ffefe5ead"}, + {file = "starlette-0.41.2-py3-none-any.whl", hash = "sha256:fbc189474b4731cf30fcef52f18a8d070e3f3b46c6a04c97579e85e6ffca942d"}, + {file = "starlette-0.41.2.tar.gz", hash = "sha256:9834fd799d1a87fd346deb76158668cfa0b0d56f85caefe8268e2d97c3468b62"}, ] [package.dependencies] @@ -3572,13 +3613,13 @@ pbr = ">=2.0.0" [[package]] name = "tenacity" -version = "8.5.0" +version = "9.0.0" description = "Retry code until it succeeds" optional = false python-versions = ">=3.8" files = [ - {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, - {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, + {file = "tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539"}, + {file = "tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b"}, ] [package.extras] @@ -3656,41 +3697,40 @@ files = [ [[package]] name = "tox" -version = "4.21.2" +version = "4.15.1" description = "tox is a generic virtualenv management and test command line tool" optional = false python-versions = ">=3.8" files = [ - {file = "tox-4.21.2-py3-none-any.whl", hash = "sha256:13d996adcd792e7c82994b0e116d85efd84f0c6d185254d83d156f73f86b2038"}, - {file = "tox-4.21.2.tar.gz", hash = "sha256:49381ff102296753e378fa5ff30e42a35e695f149b4dbf8a2c49d15fdb5797b2"}, + {file = "tox-4.15.1-py3-none-any.whl", hash = "sha256:f00a5dc4222b358e69694e47e3da0227ac41253509bca9f45aa8f012053e8d9d"}, + {file = "tox-4.15.1.tar.gz", hash = "sha256:53a092527d65e873e39213ebd4bd027a64623320b6b0326136384213f95b7076"}, ] [package.dependencies] -cachetools = ">=5.5" +cachetools = ">=5.3.2" chardet = ">=5.2" colorama = ">=0.4.6" -filelock = ">=3.16.1" -packaging = ">=24.1" -platformdirs = ">=4.3.6" -pluggy = ">=1.5" -pyproject-api = ">=1.8" +filelock = ">=3.13.1" +packaging = ">=23.2" +platformdirs = ">=4.1" +pluggy = ">=1.3" +pyproject-api = ">=1.6.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.12.2", markers = "python_version < \"3.11\""} -virtualenv = ">=20.26.6" +virtualenv = ">=20.25" [package.extras] -docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-argparse-cli (>=1.18.2)", "sphinx-autodoc-typehints (>=2.4.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=24.8)"] -testing = ["build[virtualenv] (>=1.2.2)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1.0.2)", "diff-cover (>=9.2)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.3.3)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=75.1)", "time-machine (>=2.15)", "wheel (>=0.44)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.11)"] +testing = ["build[virtualenv] (>=1.0.3)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=8.0.2)", "distlib (>=0.3.8)", "flaky (>=3.7)", "hatch-vcs (>=0.4)", "hatchling (>=1.21)", "psutil (>=5.9.7)", "pytest (>=7.4.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-xdist (>=3.5)", "re-assert (>=1.1)", "time-machine (>=2.13)", "wheel (>=0.42)"] [[package]] name = "tqdm" -version = "4.66.5" +version = "4.66.6" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.66.6-py3-none-any.whl", hash = "sha256:223e8b5359c2efc4b30555531f09e9f2f3589bcd7fdd389271191031b49b7a63"}, + {file = "tqdm-4.66.6.tar.gz", hash = "sha256:4bdd694238bef1485ce839d67967ab50af8f9272aab687c0d7702a01da0be090"}, ] [package.dependencies] @@ -3802,13 +3842,13 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "virtualenv" -version = "20.26.6" +version = "20.27.1" description = "Virtual Python Environment builder" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "virtualenv-20.26.6-py3-none-any.whl", hash = "sha256:7345cc5b25405607a624d8418154577459c3e0277f5466dd79c49d5e492995f2"}, - {file = "virtualenv-20.26.6.tar.gz", hash = "sha256:280aede09a2a5c317e409a00102e7077c6432c5a38f0ef938e643805a7ad2c48"}, + {file = "virtualenv-20.27.1-py3-none-any.whl", hash = "sha256:f11f1b8a29525562925f745563bfd48b189450f61fb34c4f9cc79dd5aa32a1f4"}, + {file = "virtualenv-20.27.1.tar.gz", hash = "sha256:142c6be10212543b32c6c45d3d3893dff89112cc588b7d0879ae5a1ec03a47ba"}, ] [package.dependencies] @@ -3927,103 +3967,93 @@ files = [ [[package]] name = "yarl" -version = "1.14.0" +version = "1.17.1" description = "Yet another URL library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "yarl-1.14.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1bfc25aa6a7c99cf86564210f79a0b7d4484159c67e01232b116e445b3036547"}, - {file = "yarl-1.14.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0cf21f46a15d445417de8fc89f2568852cf57fe8ca1ab3d19ddb24d45c0383ae"}, - {file = "yarl-1.14.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1dda53508df0de87b6e6b0a52d6718ff6c62a5aca8f5552748404963df639269"}, - {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:587c3cc59bc148a9b1c07a019346eda2549bc9f468acd2f9824d185749acf0a6"}, - {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3007a5b75cb50140708420fe688c393e71139324df599434633019314ceb8b59"}, - {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:06ff23462398333c78b6f4f8d3d70410d657a471c2c5bbe6086133be43fc8f1a"}, - {file = "yarl-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689a99a42ee4583fcb0d3a67a0204664aa1539684aed72bdafcbd505197a91c4"}, - {file = "yarl-1.14.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0547ab1e9345dc468cac8368d88ea4c5bd473ebc1d8d755347d7401982b5dd8"}, - {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:742aef0a99844faaac200564ea6f5e08facb285d37ea18bd1a5acf2771f3255a"}, - {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:176110bff341b6730f64a1eb3a7070e12b373cf1c910a9337e7c3240497db76f"}, - {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:46a9772a1efa93f9cd170ad33101c1817c77e0e9914d4fe33e2da299d7cf0f9b"}, - {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:ee2c68e4f2dd1b1c15b849ba1c96fac105fca6ffdb7c1e8be51da6fabbdeafb9"}, - {file = "yarl-1.14.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:047b258e00b99091b6f90355521f026238c63bd76dcf996d93527bb13320eefd"}, - {file = "yarl-1.14.0-cp310-cp310-win32.whl", hash = "sha256:0aa92e3e30a04f9462a25077db689c4ac5ea9ab6cc68a2e563881b987d42f16d"}, - {file = "yarl-1.14.0-cp310-cp310-win_amd64.whl", hash = "sha256:d9baec588f015d0ee564057aa7574313c53a530662ffad930b7886becc85abdf"}, - {file = "yarl-1.14.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:07f9eaf57719d6721ab15805d85f4b01a5b509a0868d7320134371bcb652152d"}, - {file = "yarl-1.14.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c14b504a74e58e2deb0378b3eca10f3d076635c100f45b113c18c770b4a47a50"}, - {file = "yarl-1.14.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:16a682a127930f3fc4e42583becca6049e1d7214bcad23520c590edd741d2114"}, - {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73bedd2be05f48af19f0f2e9e1353921ce0c83f4a1c9e8556ecdcf1f1eae4892"}, - {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3ab950f8814f3b7b5e3eebc117986f817ec933676f68f0a6c5b2137dd7c9c69"}, - {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b693c63e7e64b524f54aa4888403c680342d1ad0d97be1707c531584d6aeeb4f"}, - {file = "yarl-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85cb3e40eaa98489f1e2e8b29f5ad02ee1ee40d6ce6b88d50cf0f205de1d9d2c"}, - {file = "yarl-1.14.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f24f08b6c9b9818fd80612c97857d28f9779f0d1211653ece9844fc7b414df2"}, - {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29a84a46ec3ebae7a1c024c055612b11e9363a8a23238b3e905552d77a2bc51b"}, - {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5cd5dad8366e0168e0fd23d10705a603790484a6dbb9eb272b33673b8f2cce72"}, - {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a152751af7ef7b5d5fa6d215756e508dd05eb07d0cf2ba51f3e740076aa74373"}, - {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:3d569f877ed9a708e4c71a2d13d2940cb0791da309f70bd970ac1a5c088a0a92"}, - {file = "yarl-1.14.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a615cad11ec3428020fb3c5a88d85ce1b5c69fd66e9fcb91a7daa5e855325dd"}, - {file = "yarl-1.14.0-cp311-cp311-win32.whl", hash = "sha256:bab03192091681d54e8225c53f270b0517637915d9297028409a2a5114ff4634"}, - {file = "yarl-1.14.0-cp311-cp311-win_amd64.whl", hash = "sha256:985623575e5c4ea763056ffe0e2d63836f771a8c294b3de06d09480538316b13"}, - {file = "yarl-1.14.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:fc2c80bc87fba076e6cbb926216c27fba274dae7100a7b9a0983b53132dd99f2"}, - {file = "yarl-1.14.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:55c144d363ad4626ca744556c049c94e2b95096041ac87098bb363dcc8635e8d"}, - {file = "yarl-1.14.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b03384eed107dbeb5f625a99dc3a7de8be04fc8480c9ad42fccbc73434170b20"}, - {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f72a0d746d38cb299b79ce3d4d60ba0892c84bbc905d0d49c13df5bace1b65f8"}, - {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8648180b34faaea4aa5b5ca7e871d9eb1277033fa439693855cf0ea9195f85f1"}, - {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9557c9322aaa33174d285b0c1961fb32499d65ad1866155b7845edc876c3c835"}, - {file = "yarl-1.14.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f50eb3837012a937a2b649ec872b66ba9541ad9d6f103ddcafb8231cfcafd22"}, - {file = "yarl-1.14.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8892fa575ac9b1b25fae7b221bc4792a273877b9b56a99ee2d8d03eeb3dbb1d2"}, - {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e6a2c5c5bb2556dfbfffffc2bcfb9c235fd2b566d5006dfb2a37afc7e3278a07"}, - {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ab3abc0b78a5dfaa4795a6afbe7b282b6aa88d81cf8c1bb5e394993d7cae3457"}, - {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:47eede5d11d669ab3759b63afb70d28d5328c14744b8edba3323e27dc52d298d"}, - {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fe4d2536c827f508348d7b40c08767e8c7071614250927233bf0c92170451c0a"}, - {file = "yarl-1.14.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0fd7b941dd1b00b5f0acb97455fea2c4b7aac2dd31ea43fb9d155e9bc7b78664"}, - {file = "yarl-1.14.0-cp312-cp312-win32.whl", hash = "sha256:99ff3744f5fe48288be6bc402533b38e89749623a43208e1d57091fc96b783b9"}, - {file = "yarl-1.14.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ca3894e9e9f72da93544f64988d9c052254a338a9f855165f37f51edb6591de"}, - {file = "yarl-1.14.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d02d700705d67e09e1f57681f758f0b9d4412eeb70b2eb8d96ca6200b486db3"}, - {file = "yarl-1.14.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:30600ba5db60f7c0820ef38a2568bb7379e1418ecc947a0f76fd8b2ff4257a97"}, - {file = "yarl-1.14.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e85d86527baebb41a214cc3b45c17177177d900a2ad5783dbe6f291642d4906f"}, - {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37001e5d4621cef710c8dc1429ca04e189e572f128ab12312eab4e04cf007132"}, - {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f4f4547944d4f5cfcdc03f3f097d6f05bbbc915eaaf80a2ee120d0e756de377d"}, - {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ff4c819757f9bdb35de049a509814d6ce851fe26f06eb95a392a5640052482"}, - {file = "yarl-1.14.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68ac1a09392ed6e3fd14be880d39b951d7b981fd135416db7d18a6208c536561"}, - {file = "yarl-1.14.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96952f642ac69075e44c7d0284528938fdff39422a1d90d3e45ce40b72e5e2d9"}, - {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a56fbe3d7f3bce1d060ea18d2413a2ca9ca814eea7cedc4d247b5f338d54844e"}, - {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7e2637d75e92763d1322cb5041573279ec43a80c0f7fbbd2d64f5aee98447b17"}, - {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:9abe80ae2c9d37c17599557b712e6515f4100a80efb2cda15f5f070306477cd2"}, - {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:217a782020b875538eebf3948fac3a7f9bbbd0fd9bf8538f7c2ad7489e80f4e8"}, - {file = "yarl-1.14.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9cfef3f14f75bf6aba73a76caf61f9d00865912a04a4393c468a7ce0981b519"}, - {file = "yarl-1.14.0-cp313-cp313-win32.whl", hash = "sha256:d8361c7d04e6a264481f0b802e395f647cd3f8bbe27acfa7c12049efea675bd1"}, - {file = "yarl-1.14.0-cp313-cp313-win_amd64.whl", hash = "sha256:bc24f968b82455f336b79bf37dbb243b7d76cd40897489888d663d4e028f5069"}, - {file = "yarl-1.14.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:91d875f75fabf76b3018c5f196bf3d308ed2b49ddcb46c1576d6b075754a1393"}, - {file = "yarl-1.14.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4009def9be3a7e5175db20aa2d7307ecd00bbf50f7f0f989300710eee1d0b0b9"}, - {file = "yarl-1.14.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:582cedde49603f139be572252a318b30dc41039bc0b8165f070f279e5d12187f"}, - {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbd9ff43a04f8ffe8a959a944c2dca10d22f5f99fc6a459f49c3ebfb409309d9"}, - {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b9f805e37ed16cc212fdc538a608422d7517e7faf539bedea4fe69425bc55d76"}, - {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:95e16e9eaa2d7f5d87421b8fe694dd71606aa61d74b824c8d17fc85cc51983d1"}, - {file = "yarl-1.14.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:816d24f584edefcc5ca63428f0b38fee00b39fe64e3c5e558f895a18983efe96"}, - {file = "yarl-1.14.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd2660c01367eb3ef081b8fa0a5da7fe767f9427aa82023a961a5f28f0d4af6c"}, - {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:94b2bb9bcfd5be9d27004ea4398fb640373dd0c1a9e219084f42c08f77a720ab"}, - {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:c2089a9afef887664115f7fa6d3c0edd6454adaca5488dba836ca91f60401075"}, - {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:2192f718db4a8509f63dd6d950f143279211fa7e6a2c612edc17d85bf043d36e"}, - {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:8385ab36bf812e9d37cf7613999a87715f27ef67a53f0687d28c44b819df7cb0"}, - {file = "yarl-1.14.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b4c1ecba93e7826dc71ddba75fb7740cdb52e7bd0be9f03136b83f54e6a1f511"}, - {file = "yarl-1.14.0-cp38-cp38-win32.whl", hash = "sha256:e749af6c912a7bb441d105c50c1a3da720474e8acb91c89350080dd600228f0e"}, - {file = "yarl-1.14.0-cp38-cp38-win_amd64.whl", hash = "sha256:147e36331f6f63e08a14640acf12369e041e0751bb70d9362df68c2d9dcf0c87"}, - {file = "yarl-1.14.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a9f917966d27f7ce30039fe8d900f913c5304134096554fd9bea0774bcda6d1"}, - {file = "yarl-1.14.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a2f8fb7f944bcdfecd4e8d855f84c703804a594da5123dd206f75036e536d4d"}, - {file = "yarl-1.14.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f4e475f29a9122f908d0f1f706e1f2fc3656536ffd21014ff8a6f2e1b14d1d8"}, - {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8089d4634d8fa2b1806ce44fefa4979b1ab2c12c0bc7ef3dfa45c8a374811348"}, - {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b16f6c75cffc2dc0616ea295abb0e1967601bd1fb1e0af6a1de1c6c887f3439"}, - {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:498b3c55087b9d762636bca9b45f60d37e51d24341786dc01b81253f9552a607"}, - {file = "yarl-1.14.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3f8bfc1db82589ef965ed234b87de30d140db8b6dc50ada9e33951ccd8ec07a"}, - {file = "yarl-1.14.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:625f207b1799e95e7c823f42f473c1e9dbfb6192bd56bba8695656d92be4535f"}, - {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:781e2495e408a81e4eaeedeb41ba32b63b1980dddf8b60dbbeff6036bcd35049"}, - {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:659603d26d40dd4463200df9bfbc339fbfaed3fe32e5c432fe1dc2b5d4aa94b4"}, - {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:4e0d45ebf975634468682c8bec021618b3ad52c37619e5c938f8f831fa1ac5c0"}, - {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:a2e4725a08cb2b4794db09e350c86dee18202bb8286527210e13a1514dc9a59a"}, - {file = "yarl-1.14.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:19268b4fec1d7760134f2de46ef2608c2920134fb1fa61e451f679e41356dc55"}, - {file = "yarl-1.14.0-cp39-cp39-win32.whl", hash = "sha256:337912bcdcf193ade64b9aae5a4017a0a1950caf8ca140362e361543c6773f21"}, - {file = "yarl-1.14.0-cp39-cp39-win_amd64.whl", hash = "sha256:b6d0147574ce2e7b812c989e50fa72bbc5338045411a836bd066ce5fc8ac0bce"}, - {file = "yarl-1.14.0-py3-none-any.whl", hash = "sha256:c8ed4034f0765f8861620c1f2f2364d2e58520ea288497084dae880424fc0d9f"}, - {file = "yarl-1.14.0.tar.gz", hash = "sha256:88c7d9d58aab0724b979ab5617330acb1c7030b79379c8138c1c8c94e121d1b3"}, + {file = "yarl-1.17.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1794853124e2f663f0ea54efb0340b457f08d40a1cef78edfa086576179c91"}, + {file = "yarl-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fbea1751729afe607d84acfd01efd95e3b31db148a181a441984ce9b3d3469da"}, + {file = "yarl-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ee427208c675f1b6e344a1f89376a9613fc30b52646a04ac0c1f6587c7e46ec"}, + {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b74ff4767d3ef47ffe0cd1d89379dc4d828d4873e5528976ced3b44fe5b0a21"}, + {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:62a91aefff3d11bf60e5956d340eb507a983a7ec802b19072bb989ce120cd948"}, + {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:846dd2e1243407133d3195d2d7e4ceefcaa5f5bf7278f0a9bda00967e6326b04"}, + {file = "yarl-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e844be8d536afa129366d9af76ed7cb8dfefec99f5f1c9e4f8ae542279a6dc3"}, + {file = "yarl-1.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc7c92c1baa629cb03ecb0c3d12564f172218fb1739f54bf5f3881844daadc6d"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae3476e934b9d714aa8000d2e4c01eb2590eee10b9d8cd03e7983ad65dfbfcba"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:c7e177c619342e407415d4f35dec63d2d134d951e24b5166afcdfd1362828e17"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64cc6e97f14cf8a275d79c5002281f3040c12e2e4220623b5759ea7f9868d6a5"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:84c063af19ef5130084db70ada40ce63a84f6c1ef4d3dbc34e5e8c4febb20822"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:482c122b72e3c5ec98f11457aeb436ae4aecca75de19b3d1de7cf88bc40db82f"}, + {file = "yarl-1.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:380e6c38ef692b8fd5a0f6d1fa8774d81ebc08cfbd624b1bca62a4d4af2f9931"}, + {file = "yarl-1.17.1-cp310-cp310-win32.whl", hash = "sha256:16bca6678a83657dd48df84b51bd56a6c6bd401853aef6d09dc2506a78484c7b"}, + {file = "yarl-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:561c87fea99545ef7d692403c110b2f99dced6dff93056d6e04384ad3bc46243"}, + {file = "yarl-1.17.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:cbad927ea8ed814622305d842c93412cb47bd39a496ed0f96bfd42b922b4a217"}, + {file = "yarl-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fca4b4307ebe9c3ec77a084da3a9d1999d164693d16492ca2b64594340999988"}, + {file = "yarl-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff5c6771c7e3511a06555afa317879b7db8d640137ba55d6ab0d0c50425cab75"}, + {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b29beab10211a746f9846baa39275e80034e065460d99eb51e45c9a9495bcca"}, + {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a52a1ffdd824fb1835272e125385c32fd8b17fbdefeedcb4d543cc23b332d74"}, + {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:58c8e9620eb82a189c6c40cb6b59b4e35b2ee68b1f2afa6597732a2b467d7e8f"}, + {file = "yarl-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d216e5d9b8749563c7f2c6f7a0831057ec844c68b4c11cb10fc62d4fd373c26d"}, + {file = "yarl-1.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881764d610e3269964fc4bb3c19bb6fce55422828e152b885609ec176b41cf11"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8c79e9d7e3d8a32d4824250a9c6401194fb4c2ad9a0cec8f6a96e09a582c2cc0"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:299f11b44d8d3a588234adbe01112126010bd96d9139c3ba7b3badd9829261c3"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:cc7d768260f4ba4ea01741c1b5fe3d3a6c70eb91c87f4c8761bbcce5181beafe"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:de599af166970d6a61accde358ec9ded821234cbbc8c6413acfec06056b8e860"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2b24ec55fad43e476905eceaf14f41f6478780b870eda5d08b4d6de9a60b65b4"}, + {file = "yarl-1.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9fb815155aac6bfa8d86184079652c9715c812d506b22cfa369196ef4e99d1b4"}, + {file = "yarl-1.17.1-cp311-cp311-win32.whl", hash = "sha256:7615058aabad54416ddac99ade09a5510cf77039a3b903e94e8922f25ed203d7"}, + {file = "yarl-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:14bc88baa44e1f84164a392827b5defb4fa8e56b93fecac3d15315e7c8e5d8b3"}, + {file = "yarl-1.17.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61"}, + {file = "yarl-1.17.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d"}, + {file = "yarl-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139"}, + {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5"}, + {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac"}, + {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463"}, + {file = "yarl-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147"}, + {file = "yarl-1.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c"}, + {file = "yarl-1.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199"}, + {file = "yarl-1.17.1-cp312-cp312-win32.whl", hash = "sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96"}, + {file = "yarl-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df"}, + {file = "yarl-1.17.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488"}, + {file = "yarl-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374"}, + {file = "yarl-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac"}, + {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170"}, + {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8"}, + {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938"}, + {file = "yarl-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e"}, + {file = "yarl-1.17.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299"}, + {file = "yarl-1.17.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258"}, + {file = "yarl-1.17.1-cp313-cp313-win32.whl", hash = "sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2"}, + {file = "yarl-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda"}, + {file = "yarl-1.17.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8994b29c462de9a8fce2d591028b986dbbe1b32f3ad600b2d3e1c482c93abad6"}, + {file = "yarl-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f9cbfbc5faca235fbdf531b93aa0f9f005ec7d267d9d738761a4d42b744ea159"}, + {file = "yarl-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b40d1bf6e6f74f7c0a567a9e5e778bbd4699d1d3d2c0fe46f4b717eef9e96b95"}, + {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5efe0661b9fcd6246f27957f6ae1c0eb29bc60552820f01e970b4996e016004"}, + {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5c4804e4039f487e942c13381e6c27b4b4e66066d94ef1fae3f6ba8b953f383"}, + {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5d6a6c9602fd4598fa07e0389e19fe199ae96449008d8304bf5d47cb745462e"}, + {file = "yarl-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4c9156c4d1eb490fe374fb294deeb7bc7eaccda50e23775b2354b6a6739934"}, + {file = "yarl-1.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6324274b4e0e2fa1b3eccb25997b1c9ed134ff61d296448ab8269f5ac068c4c"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d8a8b74d843c2638f3864a17d97a4acda58e40d3e44b6303b8cc3d3c44ae2d29"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_armv7l.whl", hash = "sha256:7fac95714b09da9278a0b52e492466f773cfe37651cf467a83a1b659be24bf71"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:c180ac742a083e109c1a18151f4dd8675f32679985a1c750d2ff806796165b55"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:578d00c9b7fccfa1745a44f4eddfdc99d723d157dad26764538fbdda37209857"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:1a3b91c44efa29e6c8ef8a9a2b583347998e2ba52c5d8280dbd5919c02dfc3b5"}, + {file = "yarl-1.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a7ac5b4984c468ce4f4a553df281450df0a34aefae02e58d77a0847be8d1e11f"}, + {file = "yarl-1.17.1-cp39-cp39-win32.whl", hash = "sha256:7294e38f9aa2e9f05f765b28ffdc5d81378508ce6dadbe93f6d464a8c9594473"}, + {file = "yarl-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:eb6dce402734575e1a8cc0bb1509afca508a400a57ce13d306ea2c663bad1138"}, + {file = "yarl-1.17.1-py3-none-any.whl", hash = "sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06"}, + {file = "yarl-1.17.1.tar.gz", hash = "sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47"}, ] [package.dependencies] @@ -4034,4 +4064,4 @@ propcache = ">=0.2.0" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "774a13ff8d9141f3c63c64464c18d7854fff45abfa362c59763faf4b499a7583" +content-hash = "078835fe73f24f237538b2bcfe274972cf3e2a6828e4bc34976a5c3b0dd25190" diff --git a/gen-ai/orchestrator-server/src/main/python/server/pyproject.toml b/gen-ai/orchestrator-server/src/main/python/server/pyproject.toml index 6e72e2dabb..586b973b26 100644 --- a/gen-ai/orchestrator-server/src/main/python/server/pyproject.toml +++ b/gen-ai/orchestrator-server/src/main/python/server/pyproject.toml @@ -21,7 +21,7 @@ colorlog = "^6.8.2" boto3 = "^1.35.37" urllib3 = "^2.2.3" jinja2 = "^3.1.4" -langfuse = "^2.52.0" +langfuse = "2.36.2" httpx-auth-awssigv4 = "^0.1.4" langchain-postgres = "^0.0.12" google-cloud-secret-manager = "^2.20.2" diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/.env.exemple b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/.env.exemple new file mode 100644 index 0000000000..e6138c9bf9 --- /dev/null +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/.env.exemple @@ -0,0 +1,11 @@ +#for LangFuse dataset provider +LANGFUSE_SECRET_KEY= +LANGFUSE_PUBLIC_KEY= +LANGFUSE_HOST= + +# for LangsSmith dataset_provider +LANGCHAIN_API_KEY= + +# for smarttribune_consumer.py script +API_KEY= +API_SECRET= \ No newline at end of file diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/README.md b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/README.md index 621107de9b..6dc72845a5 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/README.md +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/README.md @@ -205,12 +205,12 @@ To configure the default vector store, you can use the following environment var ### generate_dataset.py -Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, or both. +Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, on langfuse using the --langfuse-dataset-name option, or both. ``` Usage: - generate_dataset.py [-v] --range= [--csv-output=] [ --langsmith-dataset-name= ] [--locale=] [--no-answer=] - generate_dataset.py [-v] --sheet=... [--csv-output=] [ --langsmith-dataset-name= ] [--locale=] [--no-answer=] + generate_dataset.py [-v] --range= [--csv-output=] [ --langsmith-dataset-name= ] [ --langfuse-dataset-name= ] [--locale=] [--no-answer=] + generate_dataset.py [-v] --sheet=... [--csv-output=] [ --langsmith-dataset-name= ] [ --langfuse-dataset-name= ] [--locale=] [--no-answer=] Arguments: input_excel path to the input excel file @@ -220,22 +220,22 @@ Options: --sheet= Sheet numbers to be parsed. Indices are 0-indexed. --csv-output= Output path of csv file to be generated. --langsmith-dataset-name= Name of the dataset to be saved on langsmith. + --langfuse-dataset-name= Name of the dataset to be saved on langfuse. --locale= Locale to be included in de dataset. [default: French] --no-answer= Label of no_answer to be included in the dataset. [default: NO_RAG_SENTENCE] -h --help Show this screen --version Show version -v Verbose output for debugging (without this option, script will be silent but for errors) - -Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, or both. +Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, on langfuse using the --langfuse-dataset-name option, or both. ``` ### rag_testing_tool.py -Retrieval-Augmented Generation (RAG) endpoint settings testing tool based on LangSmith's SDK: runs a specific RAG Settings configuration against a reference dataset. +Retrieval-Augmented Generation (RAG) endpoint settings testing tool based on LangSmith's or LangFuse's SDK: runs a specific RAG Settings configuration against a reference dataset. ``` Usage: - rag_testing_tool.py [-v] [] + rag_testing_tool.py [-v] [] rag_testing_tool.py -h | --help rag_testing_tool.py --version @@ -245,6 +245,7 @@ Arguments: provider, indexation session's unique id, and 'k', i.e. nb of retrieved docs (question and chat history are ignored, as they will come from the dataset) + dataset_provider the dataset provider (langsmith or langfuse) dataset_name the reference dataset name test_name name of the test run @@ -256,7 +257,7 @@ Options: be silent but for errors) ``` -Build a RAG (Lang)chain from the RAG Query and runs it against the provided LangSmith dataset. The chain is created anew for each entry of the dataset, and if a delay is provided each chain creation will be delayed accordingly. +Build a RAG (Lang)chain from the RAG Query and runs it against the provided LangSmith or LangSmith dataset. The chain is created anew for each entry of the dataset, and if a delay is provided each chain creation will be delayed accordingly. ### export_run_results.py Export a LangSmith dataset run results, in csv format. @@ -280,3 +281,27 @@ The exported CSV file will have these columns : 'Reference input'|'Reference output'|'Response 1'|'Sources 1'|...|'Response N'|'Sources N' NB: There will be as many responses as run sessions ``` + +### export_run_results_langfuse.py + +Export a LangFuse dataset run results, in csv format. + +``` +Usage: + export_run_results_langfuse.py [-v] ... + export_run_results_langfuse.py -h | --help + export_run_results_langfuse.py --version + +Arguments: + dataset_name dataset id + runs_names list of session ids + +Options: + -h --help Show this screen + --version Show version + -v Verbose output for debugging + +The exported CSV file will have these columns : +'Reference input'|'Reference output'|'Response 1'|'Sources 1'|...|'Response N'|'Sources N' +NB: There will be as many responses as run sessions +``` diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/docs/rag_testing_tools.png b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/docs/rag_testing_tools.png index fd9181feaf1fe863befc28c5456a896b31b1c34f..ed6fe2df47400a5d47a25c7e4fa3488aa37c8194 100644 GIT binary patch literal 32136 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
*X=xPH)K@>N`O!dEmzI{6i>GIY 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 _ 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

@?u8k?NZRpOz;FCeSh2ktp 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 diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/export_run_results.py b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/export_run_results.py index 6d80b1170d..7086a80b0d 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/export_run_results.py +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/export_run_results.py @@ -1,99 +1,150 @@ -"""Export a LangSmith dataset run results. - +""" +Export a LangSmith or LangFuse dataset run results. Usage: - export_run_results.py [-v] ... - export_run_results.py -h | --help - export_run_results.py --version + export_run_results_both.py [-v] ... + export_run_results_both.py -h | --help + export_run_results_both.py --version Arguments: - dataset_id dataset id - session_ids list of session ids + dataset_provider specify either 'langfuse' or 'langsmith' + dataset_id_or_name dataset id if langsmith or name if langfuse + session_or_run_ids list of session or run ids Options: + -v Verbose output -h --help Show this screen --version Show version - -v Verbose output for debugging + The exported CSV file will have these columns : 'Reference input'|'Reference output'|'Response 1'|'Sources 1'|...|'Response N'|'Sources N' NB: There will be as many responses as run sessions """ + import csv import json import logging import os +import sys import time +import boto3 import requests from docopt import docopt +from dotenv import load_dotenv +from gen_ai_orchestrator.configurations.environment.settings import application_settings +from gen_ai_orchestrator.models.security.proxy_server_type import ProxyServerType +from httpx_auth_awssigv4 import SigV4Auth +from langfuse import Langfuse +from generate_dataset import init_langfuse -def first_true(iterable, predicate=None): + +# Function to create the CSV header, works for both providers +def create_csv_header(_runs_names, provider, dataset_id): """ - Returns the first element of the iterator that satisfies the given predicate + Create the CSV file header. + This function handles both LangFuse and LangSmith providers. + Args: - iterable: the iterator - predicate: the predicate + _runs_names: List of run/session IDs. + provider: The provider being used (either 'langfuse' or 'langsmith'). + dataset_id : dataset id for langsmith or dataset name for langfuse - Returns: element of the iterator + Returns: + The CSV file header as a list. """ - return next(filter(predicate, iterable), None) + header_topic = 'Thématique de la question' + header_reference_input = 'Entrée de référence' + header_reference_output = 'Sortie de référence' + header_answer = 'Réponse' + header_sources = 'Sources' + csv_header = [header_topic, header_reference_input, header_reference_output] -def get_session_name(_id: str, sessions) -> str: - """ - Get session name. - Args: - _id: the session id - sessions: the sessions + if provider == 'langfuse': + counter = 1 + for run_name in _runs_names: + csv_header.append(f"{header_answer} {counter} ({run_name})") + csv_header.append(f"{header_sources} {counter} ({run_name})") + counter += 1 + + elif provider == 'langsmith': + sessions_content = get_sessions(dataset_id) + counter = 1 + for session_id in _runs_names: + session_name = get_session_name(session_id, sessions_content) + csv_header.append(f"{header_answer} {counter} ({session_name})") + csv_header.append(f"{header_sources} {counter} ({session_name})") + counter += 1 - Returns: the session name - """ - return first_true(sessions, predicate=lambda x: x['id'] == _id)['name'] + return csv_header -def create_csv_header(_session_ids: list[str]): +# LangFuse-specific functions +def fetch_trace_by_item_and_dataset_run(dataset_run, item): """ - Create the CSV file header + Fetches the trace for a dataset item from a LangFuse dataset run. + Args: - _session_ids: the session ids + dataset_run: The dataset run with items. + item: The dataset item. - Returns: the CSV file header + Returns: + Trace data if found, otherwise None. """ + for item_run in dataset_run: + if item.id == item_run.dataset_item_id: + trace = client.get_trace(item_run.trace_id) + return trace + return None - # CSV Headers - header_topic = 'Thématique de la question' - header_reference_input = 'Entrée de référence' - header_reference_output = 'Sortie de référence' - header_answer = 'Réponse' - header_sources = 'Sources' - # Init csv header - csv_header = [header_topic, header_reference_input, header_reference_output] +def append_runs_langfuse(dataset_item, _runs_names): + """ + Append LangFuse run data to the CSV. - # Get sessions info - sessions_content = get_sessions(dataset_id) + Args: + dataset_item: The dataset item. + _runs_names: List of run names. - # Complete csv header with sessions name - counter = 1 - for session_id in _session_ids: - session_name = get_session_name(session_id, sessions_content) - csv_header.append(f"{header_answer} {counter} ({session_name})") - csv_header.append(f"{header_sources} {counter} ({session_name})") - counter += 1 + Returns: + A list representing a line in the CSV. + """ + csv_line = [ + dataset_item.metadata["topic"] if dataset_item.metadata else "", + dataset_item.input["question"], + dataset_item.expected_output["answer"] + ] - return csv_header + for _run_name in _runs_names: + dataset_run = client.get_dataset_run(dataset_name=dataset_name, dataset_run_name=_run_name) + trace = fetch_trace_by_item_and_dataset_run(dataset_run.dataset_run_items, dataset_item) + if trace is None or trace.output is None or not isinstance(trace.output, dict): + csv_line.append('') # Empty if no trace is found + csv_line.append('') # Empty for sources as well + else: + csv_line.append(trace.output["answer"]) # Append the answer + csv_line.append('\n\n'.join( + [f'[{doc["metadata"]["title"]}]({doc["metadata"]["source"]}) : {doc["page_content"]}' + f'\n################################################################################' + f'################################################################################' for doc in + trace.output["source_documents"]])) + + return csv_line +# LangSmith-specific functions (restored) def get_sessions(_dataset_id): """ - Fetch the dataset run sessions + Fetches the dataset run sessions for LangSmith. + Args: - _dataset_id: the dataset id + _dataset_id: The dataset ID. - Returns: the dataset run sessions + Returns: + The sessions as a list. """ - logging.info(f'Call the LangSmith API to get run sessions for dataset_id={_dataset_id}.') sessions_response = requests.get( f'{base_url}/sessions?reference_dataset={_dataset_id}', @@ -104,25 +155,70 @@ def get_sessions(_dataset_id): logging.debug(f"Number of example runs obtained = {len(sessions_content)}") return sessions_content else: - logging.error(f"Failed to get example runs. \n" - f"Http code : {sessions_response.status_code} \n" - f"Content : {sessions_response.content}") + logging.error( + f"Failed to get example runs. \nHttp code: {sessions_response.status_code} \nContent: {sessions_response.content}") raise RuntimeError -def get_dataset_examples(nb_example): +def get_example_runs_content(example_id): """ - Fetch the dataset examples + Fetch runs of an example Args: - nb_example: number of examples to fetch + example_id: the example id - Returns: the dataset examples + Returns: the runs """ + logging.info(f'Call the LangSmith API to get dataset runs for the example_id={example_id}.') + example_runs_response = requests.post( + f'{base_url}/runs/query', + json={ + "reference_example": [ + example_id + ], + "is_root": "true", + "filter": "eq(is_root, true)", + "select": [ + "status", + # "inputs", + "outputs", + "end_time", + "total_cost", + # "extra", + "feedback_stats", + "error" + ], + "limit": 15 + }, + headers={"x-api-key": _LANGSMITH_API_KEY}, + ) + if example_runs_response.status_code == 200: + example_runs_content = json.loads(example_runs_response.content) + logging.debug(f"Number of example runs obtained = {len(example_runs_content)}") + return example_runs_content + else: + logging.error(f"Failed to get example runs. \n" + f"Http code : {example_runs_response.status_code} \n" + f"Content : {example_runs_response.content}") + raise RuntimeError + + +# Restoring get_dataset_examples function for LangSmith +def get_dataset_examples(nb_example, dataset_id): + """ + Fetch the dataset examples from LangSmith. + + Args: + nb_example: The number of examples to fetch. + dataset_id: The dataset ID to fetch examples for. + + Returns: + The dataset examples. + """ examples = [] counter = nb_example offset = 0 - limit = 100 # less_than_equal should be less than or equal to 100 + limit = 100 # Less than or equal to 100 while counter > 0: logging.info(f'Call the LangSmith API to get {limit} dataset examples, starting from {offset}.') @@ -137,18 +233,64 @@ def get_dataset_examples(nb_example): logging.debug(f"Number of examples obtained = {len(dataset_examples_content)}") logging.debug(f"Number of examples collected = {len(examples)}/{nb_example}") else: - logging.error(f"Failed to get dataset examples. \n" - f"Http code : {dataset_examples_response.status_code} \n" - f"Content : {dataset_examples_response.content}") + logging.error( + f"Failed to get dataset examples. \nHttp code: {dataset_examples_response.status_code} \nContent: {dataset_examples_response.content}") raise RuntimeError counter -= limit offset += limit - logging.info(f"Fetched dataset examples = {len(examples)}/{nb_example} -> {len(examples) / nb_example * 100:.2f}%") + logging.info(f"Fetched dataset examples = {len(examples)}/{nb_example}") return examples +def append_runs_langsmith(dataset_example, _session_ids): + """ + Append LangSmith run data to the CSV. + + Args: + dataset_example: The dataset example. + _session_ids: List of session IDs. + + Returns: + A list representing a line in the CSV. + """ + csv_line = [ + dataset_example["inputs"]["metadata"]["topic"], + dataset_example["inputs"]["question"], + dataset_example["outputs"]["answer"] + ] + + example_runs_content = get_example_runs_content(dataset_example['id']) + + for _id in _session_ids: + run = first_true(example_runs_content['runs'], lambda x: x['session_id'] == _id) + if run is None or run["outputs"] is None: + csv_line.append('') + csv_line.append('') + elif run["error"]: + csv_line.append(run["error"]) + csv_line.append('') + else: + csv_line.append(run["outputs"]["answer"]) + csv_line.append(','.join([doc["metadata"]["url"] for doc in run["outputs"]["source_documents"]])) + + return csv_line + + +def get_session_name(_id: str, sessions) -> str: + """ + Get session name. + Args: + _id: the session id + sessions: the sessions + + Returns: the session name + """ + + return first_true(sessions, predicate=lambda x: x['id'] == _id)['name'] + + def get_example_runs_content(example_id): """ Fetch runs of an example @@ -192,111 +334,80 @@ def get_example_runs_content(example_id): raise RuntimeError -def append_example_runs(dataset_example, _session_ids): +def first_true(iterable, predicate=None): """ - Append in a CSV line, the fetched runs for the given dataset example + Returns the first element in the iterable that satisfies the predicate. + Args: - dataset_example: the dataset example - _session_ids: the session ids + iterable: The iterable to search. + predicate: The condition to check for. - Returns: The CSV line + Returns: + The first element satisfying the predicate. """ + return next(filter(predicate, iterable), None) - # Init csv line - csv_line = [ - dataset_example["input"]["metadata"]["topic"], - dataset_example["input"]["question"], - dataset_example["outputs"]["answer"] - ] - - # Get example runs - example_runs_content = get_example_runs_content(dataset_example['id']) - # Complete csv line with example run result - for _id in _session_ids: - run = first_true(example_runs_content['runs'], predicate=lambda x: x['session_id'] == _id) - if run is None: - csv_line.append('') - csv_line.append('') - elif run["error"]: - csv_line.append(run["error"]) - csv_line.append('') - else: - csv_line.append(run["outputs"]["answer"]) - csv_line.append( - ','.join([doc["metadata"]["url"] for doc in run["outputs"]["source_documents"]]) - ) +# Check for environment variables from LangFuse and LangSmith +def check_environment_variables(provider): + """ + Checks the required environment variables based on the provider. - return csv_line + Args: + provider: The provider being used ('langfuse' or 'langsmith'). + """ + if provider == 'langfuse': + if not os.getenv('LANGFUSE_SECRET_KEY'): + logging.error('Cannot proceed: LANGFUSE_SECRET_KEY is not defined.') + sys.exit(1) + if not os.getenv('LANGFUSE_HOST'): + logging.error('Cannot proceed: LANGFUSE_HOST is not defined.') + sys.exit(1) + elif provider == 'langsmith': + if not os.getenv('LANGCHAIN_API_KEY'): + logging.error('Cannot proceed: LANGCHAIN_API_KEY is not defined.') + sys.exit(1) if __name__ == '__main__': start_time = time.time() + load_dotenv() # Load environment variables from .env file - cli_args = docopt(__doc__, version='Export dataset result runs') - # Set logging level - log_format = '%(levelname)s:%(module)s:%(message)s' - logging.basicConfig( - level=logging.DEBUG if cli_args['-v'] else logging.INFO, format=log_format - ) - # Get LangSmith API key from environment - _LANGSMITH_API_KEY = os.environ["LANGCHAIN_API_KEY"] - # The LangSmith API base url - base_url = 'https://api.smith.langchain.com/api/v1' - # The script arguments - dataset_id = cli_args[''] - session_ids = cli_args[''] - - try: - logging.info(f'Call the LangSmith API to get the dataset information for dataset_id={dataset_id}.') - dataset_info_response = requests.get( - f'{base_url}/datasets?id={dataset_id}', - headers={"x-api-key": _LANGSMITH_API_KEY}, - ) + cli_args = docopt(__doc__, version='Export Run Results 0.1.0') - # Exit the programme if an error occurs - if dataset_info_response.status_code != 200: - logging.error(f"Failed to get dataset information. \n" - f"Http code : {dataset_info_response.status_code} \n" - f"Content : {dataset_info_response.content}") - exit(1) - - # No error occurred, continue loading content - dataset_info_content = json.loads(dataset_info_response.content) - example_counter = dataset_info_content[0]['example_count'] - logging.info(f"Number of examples in dataset = {example_counter}") - - # Get dataset examples - dataset_examples = get_dataset_examples(example_counter) - - # Exit the programme if no runs is found - if len(dataset_examples) == 0: - logging.error("No runs found !") - exit(1) - - # Get the runs of all examples, then create a csv file - # CSV filename - output_csv_file = f"export_run_result_{dataset_id}_{int(time.time())}.csv" - # CSV header line - csv_lines = [create_csv_header(session_ids)] - - # CSV data lines - index = 1 - for example in dataset_examples: - csv_lines.append(append_example_runs(example, session_ids)) - progress = index / example_counter * 100 - logging.info(f"Example processed : {index}/{example_counter} - Progression : {progress:.2f}%") - index += 1 - - # Creation of CSV file - with open(output_csv_file, 'w', newline='') as csv_file: - writer = csv.writer(csv_file, delimiter='|') - writer.writerows(csv_lines) - logging.info(f"Successful csv generation. Filename : {output_csv_file}") - except requests.exceptions.RequestException as e: - logging.error("A connection error has occurred : %s", e) - - logging.info( - 'End of execution. (Duration : %.2f seconds)', - time.time() - start_time - ) + provider = cli_args[''] + log_format = '%(levelname)s:%(module)s:%(message)s' + logging.basicConfig(level=logging.DEBUG if cli_args['-v'] else logging.INFO, format=log_format) + + check_environment_variables(provider) # Check environment variables based on provider + + csv_lines = [] + if provider == 'langfuse': + dataset_name = cli_args[''] + runs_names = cli_args[''] + client = init_langfuse() + dataset = client.get_dataset(name=dataset_name) + csv_lines = [create_csv_header(runs_names, provider, dataset_name)] + for item in dataset.items: + csv_lines.append(append_runs_langfuse(item, runs_names)) + + elif provider == 'langsmith': + # The LangSmith API base url + base_url = 'https://api.smith.langchain.com/api/v1' + # Get LangSmith API key from environment + _LANGSMITH_API_KEY = os.environ["LANGCHAIN_API_KEY"] + dataset_id = cli_args[''] + session_ids = cli_args[''] + dataset_info = get_sessions(dataset_id) + examples = get_dataset_examples(len(dataset_info), dataset_id) + csv_lines = [create_csv_header(session_ids, provider, dataset_id)] + for example in examples: + csv_lines.append(append_runs_langsmith(example, session_ids)) + + output_csv_file = f"export_run_result_{provider}_{int(time.time())}.csv" + with open(output_csv_file, 'w', newline='') as csv_file: + writer = csv.writer(csv_file, delimiter='|') + writer.writerows(csv_lines) + + logging.info(f"CSV file successfully generated: {output_csv_file}") + logging.info(f"Total execution time: {time.time() - start_time:.2f} seconds") diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/generate_dataset.py b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/generate_dataset.py index a5180e7fdf..c6be41cbc4 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/generate_dataset.py +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/generate_dataset.py @@ -15,8 +15,8 @@ """Dataset generator. This script takes an excel file as input and generates a csv dataset as output. The generated dataset can also be directly sent to langsmith. Usage: - generate_dataset.py [-v] --range= [--csv-output=] [ --langsmith-dataset-name= ] [--locale=] [--no-answer=] - generate_dataset.py [-v] --sheet=... [--csv-output=] [ --langsmith-dataset-name= ] [--locale=] [--no-answer=] + generate_dataset.py [-v] --range= [--csv-output=] [ --langsmith-dataset-name= ] [ --langfuse-dataset-name= ] [--locale=] [--no-answer=] + generate_dataset.py [-v] --sheet=... [--csv-output=] [ --langsmith-dataset-name= ] [ --langfuse-dataset-name= ] [--locale=] [--no-answer=] Arguments: input_excel path to the input excel file @@ -26,23 +26,31 @@ --sheet= Sheet numbers to be parsed. Indices are 0-indexed. --csv-output= Output path of csv file to be generated. --langsmith-dataset-name= Name of the dataset to be saved on langsmith. + --langfuse-dataset-name= Name of the dataset to be saved on langfuse. --locale= Locale to be included in de dataset. [default: French] --no-answer= Label of no_answer to be included in the dataset. [default: NO_RAG_SENTENCE] -h --help Show this screen --version Show version -v Verbose output for debugging (without this option, script will be silent but for errors) -Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, or both. +Generates a testing dataset based on an input file. The input file should have the correct format (see generate_datset_input.xlsx for sample). The generated dataset can be saved on filesystem, using the --csv-output option, on langsmith, using the --langsmith-dataset-name option, on langfuse using the --langfuse-dataset-name option, or both. """ - +import base64 import logging import os from json import loads from pathlib import Path from typing import List +import boto3 +import httpx import pandas as pd from docopt import docopt +from dotenv import load_dotenv +from gen_ai_orchestrator.configurations.environment.settings import application_settings +from gen_ai_orchestrator.models.security.proxy_server_type import ProxyServerType +from httpx_auth_awssigv4 import SigV4Auth +from langfuse import Langfuse from langsmith import Client @@ -57,64 +65,67 @@ def _generate_dataset( def _parse_sheet(filename: str, sheet_index: int) -> pd.DataFrame: - logging.debug("Parsing sheet %s", sheet_index) + logging.debug('Parsing sheet %s', sheet_index) df = pd.read_excel(filename, sheet_name=sheet_index, header=None) df = df.drop(0, axis=0) # Remove header row df = df.drop([3, 4, 6, 7], axis=1) # Remove unnecessary columns - df = df.rename(columns={0: "topic", 1: "question", 2: "answer", 5: "quality"}) - df = df.loc[df["quality"].notnull()] # Ignore not annotated questions - df = df.loc[df["answer"].notnull()] # Ignore not answered questions - df["topic"] = df["topic"].ffill() # Fill in blanks in topic + df = df.rename(columns={0: 'topic', 1: 'question', 2: 'answer', 5: 'quality'}) + # df = df.loc[df['quality'].notnull()] # Ignore not annotated questions + # df = df.loc[df['answer'].notnull()] # Ignore not answered questions + df['quality'] = df['quality'].fillna('No default quality') + df['answer'] = df['answer'].fillna('No default answer') + df['topic'] = df['topic'].fillna('No default topic') + #df['topic'] = df['topic'].ffill() # Fill in blanks in topic return df def _add_locale(dataset: pd.DataFrame, locale: str) -> pd.DataFrame: - logging.debug("Using locale %s", locale) + logging.debug('Using locale %s', locale) return dataset.assign(locale=locale) def _add_no_answer(dataset: pd.DataFrame, no_answer: str) -> pd.DataFrame: - logging.debug("Using no_answer label %s", no_answer) + logging.debug('Using no_answer label %s', no_answer) return dataset.assign(no_answer=no_answer) def _parse_range(input_range: str) -> List[int]: - [a, b] = input_range.split(",") + [a, b] = input_range.split(',') return [i for i in range(int(a), int(b) + 1)] def _save_on_fs(dataset: pd.DataFrame, path: str): - logging.info("Saving dataset on path %s", path) + logging.info('Saving dataset on path %s', path) dataset.to_csv(path, index=False) def _send_to_langsmith(dataset: pd.DataFrame, dataset_name: str): # Transforms dataset to langsmith format - records = dataset.to_json(orient="records") + records = dataset.to_json(orient='records') records = loads(str(records)) # Creates dataset in langsmith client = Client() - logging.info("Creating dataset %s on langsmith...", dataset_name) + logging.info('Creating dataset %s on langsmith...', dataset_name) ls_dataset = client.create_dataset(dataset_name=dataset_name) - logging.info("Creating examples on langsmith dataset id %s...", ls_dataset.id) + logging.info('Creating examples on langsmith dataset id %s...', ls_dataset.id) client.create_examples( inputs=[ { - "question": r["question"], - "locale": r["locale"], - "no_answer": r["no_answer"], - "metadata": { - "topic": r["topic"], + 'question': r['question'], + 'locale': r['locale'], + 'no_answer': r['no_answer'], + 'metadata': { + 'topic': r['topic'], }, } for r in records ], outputs=[ { - "answer": r["answer"], - "quality": r["quality"], + 'answer': r['answer'], + 'quality': r['quality'], } for r in records ], @@ -122,49 +133,137 @@ def _send_to_langsmith(dataset: pd.DataFrame, dataset_name: str): ) -if __name__ == "__main__": - cli_args = docopt(__doc__, version="Dataset generator 0.1.0") +def init_langfuse(): + if ProxyServerType.AWS_LAMBDA == application_settings.observability_proxy_server: + """ + This AWSLambda proxy is used when the architecture implemented for the Langfuse + observability tool places it behind an API Gateway which requires its + own authentication, itself invoked by an AWS Lambda. + The API Gateway uses the standard "Authorization" header, + and uses observability_proxy_server_authorization_header_name + to define the "Authorization bearer token" for Langfuse. + """ + aws_session = boto3.Session() + aws_credentials = aws_session.get_credentials() + auth = SigV4Auth( + access_key=aws_credentials.access_key, + secret_key=aws_credentials.secret_key, + token=aws_credentials.token, + service="lambda", + region=aws_session.region_name, + ) + + langfuse_creds = base64.b64encode( + f"{os.environ['LANGFUSE_PUBLIC_KEY']}:{os.environ['LANGFUSE_SECRET_KEY']}".encode() + ).decode() + + return Langfuse(httpx_client=httpx.Client( + auth=auth, + headers={ + application_settings.observability_proxy_server_authorization_header_name: f"Basic {langfuse_creds}" + }, + )) + + return Langfuse() + + +def _send_to_langfuse(dataset: pd.DataFrame, dataset_name: str): + # Transforms dataset to JSON format + records = dataset.to_json(orient='records') + records = loads(str(records)) + + # Initializes the Langfuse client + client = init_langfuse() + + logging.info('Creating dataset %s on Langfuse...', dataset_name) + + # Creates dataset in Langfuse + lf_dataset = client.create_dataset(name=dataset_name) + + logging.info('Creating examples on Langfuse dataset id %s...', lf_dataset.id) + + # Prepares inputs and outputs + inputs = [ + { + 'question': r['question'], + 'locale': r['locale'], + 'no_answer': r['no_answer'], + } + for r in records + ] + metadatas = [{'topic': r['topic']} for r in records] + + outputs = [ + { + 'answer': r['answer'], + 'quality': r['quality'], + } + for r in records + ] + + # Creates examples in the dataset on Langfuse + for input, metadata, output in zip(inputs, metadatas, outputs): + logging.info('import data') + client.create_dataset_item( + dataset_name=dataset_name, + input=input, + expected_output=output, + metadata=metadata, + ) + +if __name__ == '__main__': + cli_args = docopt(__doc__, version='Dataset generator 0.1.0') + load_dotenv() # Set logging level - log_format = "%(levelname)s:%(module)s:%(message)s" + log_format = '%(levelname)s:%(module)s:%(message)s' logging.basicConfig( - level=logging.DEBUG if cli_args["-v"] else logging.INFO, format=log_format + level=logging.DEBUG if cli_args['-v'] else logging.INFO, format=log_format ) # check if input filer exists - filename = cli_args[""] + filename = cli_args[''] if not os.path.isfile(filename): - logging.error("Specified input excel file was not found.") + logging.error('Specified input excel file was not found.') exit(1) # check if langsmith creds is set - langsmith_dataset_name = cli_args["--langsmith-dataset-name"] - if langsmith_dataset_name and not os.environ.get("LANGCHAIN_API_KEY"): - logging.error("Envvar LANGCHAIN_API_KEY not found.") + langsmith_dataset_name = cli_args['--langsmith-dataset-name'] + if langsmith_dataset_name and not os.environ.get('LANGCHAIN_API_KEY'): + logging.error('Envvar LANGCHAIN_API_KEY not found.') + exit(1) + + # check if langfuse creds is set + langfuse_dataset_name = cli_args['--langfuse-dataset-name'] + if langfuse_dataset_name and not os.environ.get('LANGFUSE_PUBLIC_KEY'): + logging.error('Envvar LANGFUSE_PUBLIC_KEY not found.') exit(1) # check if output file can be written - output_path = cli_args["--csv-output"] + output_path = cli_args['--csv-output'] if output_path and not Path(output_path).parent.exists(): logging.error( - "Cannot proceed: directory %s does not exist", Path(output_path).parent + 'Cannot proceed: directory %s does not exist', Path(output_path).parent ) exit(1) - if cli_args.get("--range") is not None: - sheet_indices = _parse_range(str(cli_args["--range"])) + if cli_args.get('--range') is not None: + sheet_indices = _parse_range(str(cli_args['--range'])) else: - sheet_indices = [int(i) for i in cli_args["--sheet"]] + sheet_indices = [int(i) for i in cli_args['--sheet']] dataset = _generate_dataset( filename=filename, sheet_indices=sheet_indices, - locale=cli_args["--locale"] or "French", - no_answer=cli_args["--no-answer"] or "NO_RAG_SENTENCE", + locale=cli_args['--locale'] or 'French', + no_answer=cli_args['--no-answer'] or 'NO_RAG_SENTENCE', ) if output_path: _save_on_fs(dataset, output_path) if langsmith_dataset_name: - _send_to_langsmith(dataset, cli_args["--langsmith-dataset-name"]) + _send_to_langsmith(dataset, cli_args['--langsmith-dataset-name']) + + if langfuse_dataset_name: + _send_to_langfuse(dataset, cli_args['--langfuse-dataset-name']) diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/poetry.lock b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/poetry.lock index 6c1a131d4e..efb3310ad9 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/poetry.lock +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/poetry.lock @@ -729,7 +729,7 @@ langchain = "^0.3.3" langchain-community = "^0.3.2" langchain-openai = "^0.2.2" langchain-postgres = "^0.0.12" -langfuse = "^2.52.0" +langfuse = "2.36.2" opensearch-py = "^2.7.1" path = "^17.0.0" psycopg = {version = "^3.2.3", extras = ["binary"]} @@ -1172,84 +1172,84 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jiter" -version = "0.6.1" +version = "0.7.0" description = "Fast iterable JSON parser." optional = false python-versions = ">=3.8" files = [ - {file = "jiter-0.6.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d08510593cb57296851080018006dfc394070178d238b767b1879dc1013b106c"}, - {file = "jiter-0.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adef59d5e2394ebbad13b7ed5e0306cceb1df92e2de688824232a91588e77aa7"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3e02f7a27f2bcc15b7d455c9df05df8ffffcc596a2a541eeda9a3110326e7a3"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed69a7971d67b08f152c17c638f0e8c2aa207e9dd3a5fcd3cba294d39b5a8d2d"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b2019d966e98f7c6df24b3b8363998575f47d26471bfb14aade37630fae836a1"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:36c0b51a285b68311e207a76c385650322734c8717d16c2eb8af75c9d69506e7"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:220e0963b4fb507c525c8f58cde3da6b1be0bfddb7ffd6798fb8f2531226cdb1"}, - {file = "jiter-0.6.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa25c7a9bf7875a141182b9c95aed487add635da01942ef7ca726e42a0c09058"}, - {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e90552109ca8ccd07f47ca99c8a1509ced93920d271bb81780a973279974c5ab"}, - {file = "jiter-0.6.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:67723a011964971864e0b484b0ecfee6a14de1533cff7ffd71189e92103b38a8"}, - {file = "jiter-0.6.1-cp310-none-win32.whl", hash = "sha256:33af2b7d2bf310fdfec2da0177eab2fedab8679d1538d5b86a633ebfbbac4edd"}, - {file = "jiter-0.6.1-cp310-none-win_amd64.whl", hash = "sha256:7cea41c4c673353799906d940eee8f2d8fd1d9561d734aa921ae0f75cb9732f4"}, - {file = "jiter-0.6.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b03c24e7da7e75b170c7b2b172d9c5e463aa4b5c95696a368d52c295b3f6847f"}, - {file = "jiter-0.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:47fee1be677b25d0ef79d687e238dc6ac91a8e553e1a68d0839f38c69e0ee491"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0d2f6e01a8a0fb0eab6d0e469058dab2be46ff3139ed2d1543475b5a1d8e7"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b809e39e342c346df454b29bfcc7bca3d957f5d7b60e33dae42b0e5ec13e027"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e9ac7c2f092f231f5620bef23ce2e530bd218fc046098747cc390b21b8738a7a"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e51a2d80d5fe0ffb10ed2c82b6004458be4a3f2b9c7d09ed85baa2fbf033f54b"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3343d4706a2b7140e8bd49b6c8b0a82abf9194b3f0f5925a78fc69359f8fc33c"}, - {file = "jiter-0.6.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82521000d18c71e41c96960cb36e915a357bc83d63a8bed63154b89d95d05ad1"}, - {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c843e7c1633470708a3987e8ce617ee2979ee18542d6eb25ae92861af3f1d62"}, - {file = "jiter-0.6.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a2e861658c3fe849efc39b06ebb98d042e4a4c51a8d7d1c3ddc3b1ea091d0784"}, - {file = "jiter-0.6.1-cp311-none-win32.whl", hash = "sha256:7d72fc86474862c9c6d1f87b921b70c362f2b7e8b2e3c798bb7d58e419a6bc0f"}, - {file = "jiter-0.6.1-cp311-none-win_amd64.whl", hash = "sha256:3e36a320634f33a07794bb15b8da995dccb94f944d298c8cfe2bd99b1b8a574a"}, - {file = "jiter-0.6.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1fad93654d5a7dcce0809aff66e883c98e2618b86656aeb2129db2cd6f26f867"}, - {file = "jiter-0.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4e6e340e8cd92edab7f6a3a904dbbc8137e7f4b347c49a27da9814015cc0420c"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:691352e5653af84ed71763c3c427cff05e4d658c508172e01e9c956dfe004aba"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:defee3949313c1f5b55e18be45089970cdb936eb2a0063f5020c4185db1b63c9"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:26d2bdd5da097e624081c6b5d416d3ee73e5b13f1703bcdadbb1881f0caa1933"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18aa9d1626b61c0734b973ed7088f8a3d690d0b7f5384a5270cd04f4d9f26c86"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a3567c8228afa5ddcce950631c6b17397ed178003dc9ee7e567c4c4dcae9fa0"}, - {file = "jiter-0.6.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c0507131c922defe3f04c527d6838932fcdfd69facebafd7d3574fa3395314"}, - {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:540fcb224d7dc1bcf82f90f2ffb652df96f2851c031adca3c8741cb91877143b"}, - {file = "jiter-0.6.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e7b75436d4fa2032b2530ad989e4cb0ca74c655975e3ff49f91a1a3d7f4e1df2"}, - {file = "jiter-0.6.1-cp312-none-win32.whl", hash = "sha256:883d2ced7c21bf06874fdeecab15014c1c6d82216765ca6deef08e335fa719e0"}, - {file = "jiter-0.6.1-cp312-none-win_amd64.whl", hash = "sha256:91e63273563401aadc6c52cca64a7921c50b29372441adc104127b910e98a5b6"}, - {file = "jiter-0.6.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:852508a54fe3228432e56019da8b69208ea622a3069458252f725d634e955b31"}, - {file = "jiter-0.6.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f491cc69ff44e5a1e8bc6bf2b94c1f98d179e1aaf4a554493c171a5b2316b701"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc56c8f0b2a28ad4d8047f3ae62d25d0e9ae01b99940ec0283263a04724de1f3"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51b58f7a0d9e084a43b28b23da2b09fc5e8df6aa2b6a27de43f991293cab85fd"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5f79ce15099154c90ef900d69c6b4c686b64dfe23b0114e0971f2fecd306ec6c"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:03a025b52009f47e53ea619175d17e4ded7c035c6fbd44935cb3ada11e1fd592"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c74a8d93718137c021d9295248a87c2f9fdc0dcafead12d2930bc459ad40f885"}, - {file = "jiter-0.6.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40b03b75f903975f68199fc4ec73d546150919cb7e534f3b51e727c4d6ccca5a"}, - {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:825651a3f04cf92a661d22cad61fc913400e33aa89b3e3ad9a6aa9dc8a1f5a71"}, - {file = "jiter-0.6.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:928bf25eb69ddb292ab8177fe69d3fbf76c7feab5fce1c09265a7dccf25d3991"}, - {file = "jiter-0.6.1-cp313-none-win32.whl", hash = "sha256:352cd24121e80d3d053fab1cc9806258cad27c53cad99b7a3cac57cf934b12e4"}, - {file = "jiter-0.6.1-cp313-none-win_amd64.whl", hash = "sha256:be7503dd6f4bf02c2a9bacb5cc9335bc59132e7eee9d3e931b13d76fd80d7fda"}, - {file = "jiter-0.6.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:31d8e00e1fb4c277df8ab6f31a671f509ebc791a80e5c61fdc6bc8696aaa297c"}, - {file = "jiter-0.6.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:77c296d65003cd7ee5d7b0965f6acbe6cffaf9d1fa420ea751f60ef24e85fed5"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeeb0c0325ef96c12a48ea7e23e2e86fe4838e6e0a995f464cf4c79fa791ceeb"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a31c6fcbe7d6c25d6f1cc6bb1cba576251d32795d09c09961174fe461a1fb5bd"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59e2b37f3b9401fc9e619f4d4badcab2e8643a721838bcf695c2318a0475ae42"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bae5ae4853cb9644144e9d0755854ce5108d470d31541d83f70ca7ecdc2d1637"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df588e9c830b72d8db1dd7d0175af6706b0904f682ea9b1ca8b46028e54d6e9"}, - {file = "jiter-0.6.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15f8395e835cf561c85c1adee72d899abf2733d9df72e9798e6d667c9b5c1f30"}, - {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a99d4e0b5fc3b05ea732d67eb2092fe894e95a90e6e413f2ea91387e228a307"}, - {file = "jiter-0.6.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a311df1fa6be0ccd64c12abcd85458383d96e542531bafbfc0a16ff6feda588f"}, - {file = "jiter-0.6.1-cp38-none-win32.whl", hash = "sha256:81116a6c272a11347b199f0e16b6bd63f4c9d9b52bc108991397dd80d3c78aba"}, - {file = "jiter-0.6.1-cp38-none-win_amd64.whl", hash = "sha256:13f9084e3e871a7c0b6e710db54444088b1dd9fbefa54d449b630d5e73bb95d0"}, - {file = "jiter-0.6.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f1c53615fcfec3b11527c08d19cff6bc870da567ce4e57676c059a3102d3a082"}, - {file = "jiter-0.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f791b6a4da23238c17a81f44f5b55d08a420c5692c1fda84e301a4b036744eb1"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c97e90fec2da1d5f68ef121444c2c4fa72eabf3240829ad95cf6bbeca42a301"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3cbc1a66b4e41511209e97a2866898733c0110b7245791ac604117b7fb3fedb7"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4e85f9e12cd8418ab10e1fcf0e335ae5bb3da26c4d13a0fd9e6a17a674783b6"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08be33db6dcc374c9cc19d3633af5e47961a7b10d4c61710bd39e48d52a35824"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:677be9550004f5e010d673d3b2a2b815a8ea07a71484a57d3f85dde7f14cf132"}, - {file = "jiter-0.6.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e8bd065be46c2eecc328e419d6557bbc37844c88bb07b7a8d2d6c91c7c4dedc9"}, - {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bd95375ce3609ec079a97c5d165afdd25693302c071ca60c7ae1cf826eb32022"}, - {file = "jiter-0.6.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db459ed22d0208940d87f614e1f0ea5a946d29a3cfef71f7e1aab59b6c6b2afb"}, - {file = "jiter-0.6.1-cp39-none-win32.whl", hash = "sha256:d71c962f0971347bd552940ab96aa42ceefcd51b88c4ced8a27398182efa8d80"}, - {file = "jiter-0.6.1-cp39-none-win_amd64.whl", hash = "sha256:d465db62d2d10b489b7e7a33027c4ae3a64374425d757e963f86df5b5f2e7fc5"}, - {file = "jiter-0.6.1.tar.gz", hash = "sha256:e19cd21221fc139fb032e4112986656cb2739e9fe6d84c13956ab30ccc7d4449"}, + {file = "jiter-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:e14027f61101b3f5e173095d9ecf95c1cac03ffe45a849279bde1d97e559e314"}, + {file = "jiter-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:979ec4711c2e37ac949561858bd42028884c9799516a923e1ff0b501ef341a4a"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:662d5d3cca58ad6af7a3c6226b641c8655de5beebcb686bfde0df0f21421aafa"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1d89008fb47043a469f97ad90840b97ba54e7c3d62dc7cbb6cbf938bd0caf71d"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8b16c35c846a323ce9067170d5ab8c31ea3dbcab59c4f7608bbbf20c2c3b43f"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e82daaa1b0a68704f9029b81e664a5a9de3e466c2cbaabcda5875f961702e7"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43a87a9f586636e1f0dd3651a91f79b491ea0d9fd7cbbf4f5c463eebdc48bda7"}, + {file = "jiter-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2ec05b1615f96cc3e4901678bc863958611584072967d9962f9e571d60711d52"}, + {file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a5cb97e35370bde7aa0d232a7f910f5a0fbbc96bc0a7dbaa044fd5cd6bcd7ec3"}, + {file = "jiter-0.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb316dacaf48c8c187cea75d0d7f835f299137e6fdd13f691dff8f92914015c7"}, + {file = "jiter-0.7.0-cp310-none-win32.whl", hash = "sha256:243f38eb4072763c54de95b14ad283610e0cd3bf26393870db04e520f60eebb3"}, + {file = "jiter-0.7.0-cp310-none-win_amd64.whl", hash = "sha256:2221d5603c139f6764c54e37e7c6960c469cbcd76928fb10d15023ba5903f94b"}, + {file = "jiter-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:91cec0ad755bd786c9f769ce8d843af955df6a8e56b17658771b2d5cb34a3ff8"}, + {file = "jiter-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:feba70a28a27d962e353e978dbb6afd798e711c04cb0b4c5e77e9d3779033a1a"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9d866ec066c3616cacb8535dbda38bb1d470b17b25f0317c4540182bc886ce2"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e7a7a00b6f9f18289dd563596f97ecaba6c777501a8ba04bf98e03087bcbc60"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9aaf564094c7db8687f2660605e099f3d3e6ea5e7135498486674fcb78e29165"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a4d27e09825c1b3c7a667adb500ce8b840e8fc9f630da8454b44cdd4fb0081bb"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca7c287da9c1d56dda88da1d08855a787dbb09a7e2bd13c66a2e288700bd7c7"}, + {file = "jiter-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:db19a6d160f093cbc8cd5ea2abad420b686f6c0e5fb4f7b41941ebc6a4f83cda"}, + {file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6e46a63c7f877cf7441ffc821c28287cfb9f533ae6ed707bde15e7d4dfafa7ae"}, + {file = "jiter-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ba426fa7ff21cb119fa544b75dd3fbee6a70e55a5829709c0338d07ccd30e6d"}, + {file = "jiter-0.7.0-cp311-none-win32.whl", hash = "sha256:c07f55a64912b0c7982377831210836d2ea92b7bd343fca67a32212dd72e38e0"}, + {file = "jiter-0.7.0-cp311-none-win_amd64.whl", hash = "sha256:ed27b2c43e1b5f6c7fedc5c11d4d8bfa627de42d1143d87e39e2e83ddefd861a"}, + {file = "jiter-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac7930bcaaeb1e229e35c91c04ed2e9f39025b86ee9fc3141706bbf6fff4aeeb"}, + {file = "jiter-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:571feae3e7c901a8eedde9fd2865b0dfc1432fb15cab8c675a8444f7d11b7c5d"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8af4df8a262fa2778b68c2a03b6e9d1cb4d43d02bea6976d46be77a3a331af1"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd028d4165097a611eb0c7494d8c1f2aebd46f73ca3200f02a175a9c9a6f22f5"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c6b487247c7836810091e9455efe56a52ec51bfa3a222237e1587d04d3e04527"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e6d28a92f28814e1a9f2824dc11f4e17e1df1f44dc4fdeb94c5450d34bcb2602"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90443994bbafe134f0b34201dad3ebe1c769f0599004084e046fb249ad912425"}, + {file = "jiter-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f9abf464f9faac652542ce8360cea8e68fba2b78350e8a170248f9bcc228702a"}, + {file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db7a8d99fc5f842f7d2852f06ccaed066532292c41723e5dff670c339b649f88"}, + {file = "jiter-0.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:15cf691ebd8693b70c94627d6b748f01e6d697d9a6e9f2bc310934fcfb7cf25e"}, + {file = "jiter-0.7.0-cp312-none-win32.whl", hash = "sha256:9dcd54fa422fb66ca398bec296fed5f58e756aa0589496011cfea2abb5be38a5"}, + {file = "jiter-0.7.0-cp312-none-win_amd64.whl", hash = "sha256:cc989951f73f9375b8eacd571baaa057f3d7d11b7ce6f67b9d54642e7475bfad"}, + {file = "jiter-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:24cecd18df540963cd27c08ca5ce1d0179f229ff78066d9eecbe5add29361340"}, + {file = "jiter-0.7.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d41b46236b90b043cca73785674c23d2a67d16f226394079d0953f94e765ed76"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b160db0987171365c153e406a45dcab0ee613ae3508a77bfff42515cb4ce4d6e"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d1c8d91e0f0bd78602eaa081332e8ee4f512c000716f5bc54e9a037306d693a7"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997706c683195eeff192d2e5285ce64d2a610414f37da3a3f2625dcf8517cf90"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ea52a8a0ff0229ab2920284079becd2bae0688d432fca94857ece83bb49c541"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d77449d2738cf74752bb35d75ee431af457e741124d1db5e112890023572c7c"}, + {file = "jiter-0.7.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a8203519907a1d81d6cb00902c98e27c2d0bf25ce0323c50ca594d30f5f1fbcf"}, + {file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41d15ccc53931c822dd7f1aebf09faa3cda2d7b48a76ef304c7dbc19d1302e51"}, + {file = "jiter-0.7.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:febf3179b2fabf71fbd2fd52acb8594163bb173348b388649567a548f356dbf6"}, + {file = "jiter-0.7.0-cp313-none-win32.whl", hash = "sha256:4a8e2d866e7eda19f012444e01b55079d8e1c4c30346aaac4b97e80c54e2d6d3"}, + {file = "jiter-0.7.0-cp313-none-win_amd64.whl", hash = "sha256:7417c2b928062c496f381fb0cb50412eee5ad1d8b53dbc0e011ce45bb2de522c"}, + {file = "jiter-0.7.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:9c62c737b5368e51e74960a08fe1adc807bd270227291daede78db24d5fbf556"}, + {file = "jiter-0.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e4640722b1bef0f6e342fe4606aafaae0eb4f4be5c84355bb6867f34400f6688"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f367488c3b9453eab285424c61098faa1cab37bb49425e69c8dca34f2dfe7d69"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0cf5d42beb3514236459454e3287db53d9c4d56c4ebaa3e9d0efe81b19495129"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cc5190ea1113ee6f7252fa8a5fe5a6515422e378356c950a03bbde5cafbdbaab"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63ee47a149d698796a87abe445fc8dee21ed880f09469700c76c8d84e0d11efd"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48592c26ea72d3e71aa4bea0a93454df907d80638c3046bb0705507b6704c0d7"}, + {file = "jiter-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:79fef541199bd91cfe8a74529ecccb8eaf1aca38ad899ea582ebbd4854af1e51"}, + {file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d1ef6bb66041f2514739240568136c81b9dcc64fd14a43691c17ea793b6535c0"}, + {file = "jiter-0.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aca4d950863b1c238e315bf159466e064c98743eef3bd0ff9617e48ff63a4715"}, + {file = "jiter-0.7.0-cp38-none-win32.whl", hash = "sha256:897745f230350dcedb8d1ebe53e33568d48ea122c25e6784402b6e4e88169be7"}, + {file = "jiter-0.7.0-cp38-none-win_amd64.whl", hash = "sha256:b928c76a422ef3d0c85c5e98c498ce3421b313c5246199541e125b52953e1bc0"}, + {file = "jiter-0.7.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c9b669ff6f8ba08270dee9ccf858d3b0203b42314a428a1676762f2d390fbb64"}, + {file = "jiter-0.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b5be919bacd73ca93801c3042bce6e95cb9c555a45ca83617b9b6c89df03b9c2"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a282e1e8a396dabcea82d64f9d05acf7efcf81ecdd925b967020dcb0e671c103"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:17ecb1a578a56e97a043c72b463776b5ea30343125308f667fb8fce4b3796735"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b6045fa0527129218cdcd8a8b839f678219686055f31ebab35f87d354d9c36e"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:189cc4262a92e33c19d4fd24018f5890e4e6da5b2581f0059938877943f8298c"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c138414839effbf30d185e30475c6dc8a16411a1e3681e5fd4605ab1233ac67a"}, + {file = "jiter-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2791604acef33da6b72d5ecf885a32384bcaf9aa1e4be32737f3b8b9588eef6a"}, + {file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ae60ec89037a78d60bbf3d8b127f1567769c8fa24886e0abed3f622791dea478"}, + {file = "jiter-0.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:836f03dea312967635233d826f783309b98cfd9ccc76ac776e224cfcef577862"}, + {file = "jiter-0.7.0-cp39-none-win32.whl", hash = "sha256:ebc30ae2ce4bc4986e1764c404b4ea1924f926abf02ce92516485098f8545374"}, + {file = "jiter-0.7.0-cp39-none-win_amd64.whl", hash = "sha256:abf596f951370c648f37aa9899deab296c42a3829736e598b0dd10b08f77a44d"}, + {file = "jiter-0.7.0.tar.gz", hash = "sha256:c061d9738535497b5509f8970584f20de1e900806b239a39a9994fc191dad630"}, ] [[package]] @@ -1306,8 +1306,8 @@ langchain-core = ">=0.3.14,<0.4.0" langchain-text-splitters = ">=0.3.0,<0.4.0" langsmith = ">=0.1.17,<0.2.0" numpy = [ - {version = ">=1,<2", markers = "python_version < \"3.12\""}, {version = ">=1.26.0,<2.0.0", markers = "python_version >= \"3.12\""}, + {version = ">=1,<2", markers = "python_version < \"3.12\""}, ] pydantic = ">=2.7.4,<3.0.0" PyYAML = ">=5.3" @@ -1334,8 +1334,8 @@ langchain = ">=0.3.6,<0.4.0" langchain-core = ">=0.3.14,<0.4.0" langsmith = ">=0.1.125,<0.2.0" numpy = [ - {version = ">=1,<2", markers = "python_version < \"3.12\""}, {version = ">=1.26.0,<2.0.0", markers = "python_version >= \"3.12\""}, + {version = ">=1,<2", markers = "python_version < \"3.12\""}, ] pydantic-settings = ">=2.4.0,<3.0.0" PyYAML = ">=5.3" @@ -1359,8 +1359,8 @@ jsonpatch = ">=1.33,<2.0" langsmith = ">=0.1.125,<0.2.0" packaging = ">=23.2,<25" pydantic = [ - {version = ">=2.5.2,<3.0.0", markers = "python_full_version < \"3.12.4\""}, {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, + {version = ">=2.5.2,<3.0.0", markers = "python_full_version < \"3.12.4\""}, ] PyYAML = ">=5.3" tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10.0.0" @@ -1427,11 +1427,10 @@ files = [ ] [package.dependencies] -anyio = ">=4.4.0,<5.0.0" backoff = ">=1.10.0" httpx = ">=0.15.4,<1.0" idna = ">=3.7,<4.0" -packaging = ">=23.2,<25.0" +packaging = ">=23.2,<24.0" pydantic = ">=1.10.7,<3.0" wrapt = ">=1.14,<2.0" @@ -1455,8 +1454,8 @@ files = [ httpx = ">=0.23.0,<1" orjson = ">=3.9.14,<4.0.0" pydantic = [ - {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""}, {version = ">=2.7.4,<3.0.0", markers = "python_full_version >= \"3.12.4\""}, + {version = ">=1,<3", markers = "python_full_version < \"3.12.4\""}, ] requests = ">=2,<3" requests-toolbelt = ">=1.0.0,<2.0.0" @@ -1852,13 +1851,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "23.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] @@ -1917,6 +1916,8 @@ numpy = [ {version = ">=1.22.4", markers = "python_version < \"3.11\""}, {version = ">=1.23.2", markers = "python_version == \"3.11\""}, {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.22.4", markers = "python_version < \"3.11\""}, + {version = ">=1.23.2", markers = "python_version == \"3.11\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -2304,8 +2305,8 @@ files = [ annotated-types = ">=0.6.0" pydantic-core = "2.23.4" typing-extensions = [ - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, ] [package.extras] diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/pyproject.toml b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/pyproject.toml index 5431503e23..92b10dab20 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/pyproject.toml +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/pyproject.toml @@ -10,21 +10,22 @@ package-mode = false [tool.poetry.dependencies] python = "^3.10" docopt-ng = "^0.9.0" -pandas = "^2.2.1" -openpyxl = "^3.1.2" +pandas = "^2.2.3" +openpyxl = "^3.1.5" beautifulsoup4 = "^4.12.2" -langchain = "^0.3.3" -langsmith = "^0.1.134" -python-dotenv = "^1.0.0" -opensearch-py = "^2.4.2" -gen_ai_orchestrator = {path = "../server", develop=true} -langchain-community = "^0.3.2" +langchain = "^0.3.7" +langsmith = "^0.1.139" +python-dotenv = "^1.0.1" +opensearch-py = "^2.7.1" +gen_ai_orchestrator = {path = "../server"} +langchain-community = "^0.3.5" pre-commit = "^3.7.1" aiometer = "^0.5.0" aiohttp = "^3.10.10" aiohttp-socks = "^0.9.0" -pydantic = "^2.9.0" +pydantic = "^2.9.2" humanize = "^4.11.0" +langfuse = "2.36.2" [build-system] requires = ["poetry-core"] diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/rag_testing_tool.py b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/rag_testing_tool.py index 9109e68561..2bf18f51b3 100644 --- a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/rag_testing_tool.py +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/rag_testing_tool.py @@ -13,11 +13,11 @@ # limitations under the License. # """Retrieval-Augmented Generation (RAG) endpoint settings testing tool based -on LangSmith's SDK: runs a specific RAG Settings configuration against a +on LangSmith's or LangFuse's SDK: runs a specific RAG Settings configuration against a reference dataset. Usage: - rag_testing_tool.py [-v] [] + rag_testing_tool.py [-v] [] rag_testing_tool.py -h | --help rag_testing_tool.py --version @@ -27,6 +27,7 @@ provider, indexation session's unique id, and 'k', i.e. nb of retrieved docs (question and chat history are ignored, as they will come from the dataset) + dataset_provider the dataset provider (langsmith or langfuse) dataset_name the reference dataset name test_name name of the test run @@ -38,7 +39,7 @@ be silent but for errors) Build a RAG (Lang)chain from the RAG Query and runs it against the provided -LangSmith dataset. The chain is created anew for each entry of the dataset, and +LangSmith or LangFuse dataset. The chain is created anew for each entry of the dataset, and if a delay is provided, each chain creation will be delayed accordingly. """ import json @@ -52,10 +53,13 @@ from docopt import docopt from dotenv import load_dotenv -from langsmith import Client - from gen_ai_orchestrator.routers.requests.requests import RagQuery from gen_ai_orchestrator.services.langchain.rag_chain import create_rag_chain +from langsmith import Client +from tenacity import ( + retry, + stop_after_attempt, + wait_random_exponential, ) def test_rag(args): @@ -66,6 +70,7 @@ def test_rag(args): args (dict): A dictionary containing command-line arguments. Expecting keys: '' + '' '' '' '' @@ -88,11 +93,43 @@ def _construct_chain(): 'chat_history': lambda x: x['chat_history'] if 'chat_history' in x else [], } | create_rag_chain(RagQuery(**rag_query)) - client = Client() + @retry(wait=wait_random_exponential(min=10, max=60), stop=stop_after_attempt(5)) + def run_dataset(run_name_dataset): + + if args[''].lower() == 'langsmith': + client = Client() + client.run_on_dataset( + + dataset_name=args[''], + llm_or_chain_factory=_construct_chain, + project_name=run_name_dataset, + project_metadata={ + 'document_index_name': document_index_name, + 'k': k, + }, + concurrency_level=concurrency_level, + ) + elif args[''].lower() == 'langfuse': + client = init_langfuse() + dataset = client.get_dataset(args['']) + + for item in dataset.items: + callback_handlers = [] + handler = item.get_langchain_handler( + run_name=run_name_dataset, + run_metadata={ + 'document_index_name': document_index_name, + 'k': k, + }, + ) + callback_handlers.append(handler) + _construct_chain().invoke( + item.input, config={'callbacks': callback_handlers} + ) + client.flush() + + document_index_name = rag_query['document_index_name'] search_params = rag_query['document_search_params'] - index_session_id = search_params['filter'][0]['term'][ - 'metadata.index_session_id.keyword' - ] k = search_params['k'] # This is LangSmith's default concurrency level @@ -101,24 +138,15 @@ def _construct_chain(): # one at a time if args['']: concurrency_level = 1 - - client.run_on_dataset( - dataset_name=args[''], - llm_or_chain_factory=_construct_chain, - project_name=args[''] + '-' + str(uuid4())[:8], - project_metadata={ - 'index_session_id': index_session_id, - 'k': k, - }, - concurrency_level=concurrency_level, - ) + run_name_dataset = args[''] + '-' + str(uuid4())[:8] + run_dataset(run_name_dataset) duration = datetime.now() - start_time hours, remainder = divmod(duration.seconds, 3600) minutes, seconds = divmod(remainder, 60) formatted_duration = '{:02}:{:02}:{:02}'.format(hours, minutes, seconds) logging.debug( - f'Ran RAGQuery (k={k}, index_session_id={index_session_id}) on ' + f'Ran RAGQuery (k={k}, document_index_name={document_index_name}) on ' f"{args['']} dataset (duration: {formatted_duration})" ) @@ -133,22 +161,38 @@ def _construct_chain(): ) load_dotenv() - - # Check env (LangSmith) - langchain_endpoint = os.getenv('LANGCHAIN_ENDPOINT') - if not langchain_endpoint: - logging.error( - 'Cannot proceed: LANGCHAIN_ENDPOINT env variable is not defined (define it in a .env file)' - ) - sys.exit(1) - - langchain_apikey = os.getenv('LANGCHAIN_API_KEY') - if not langchain_apikey: + if cli_args[''].lower() == 'langsmith': + # Check env (LangSmith) + langchain_apikey = os.getenv('LANGCHAIN_API_KEY') + if not langchain_apikey: + logging.error( + 'Cannot proceed: LANGCHAIN_API_KEY env variable is not defined (define it in a .env file)' + ) + sys.exit(1) + elif cli_args[''].lower() == 'langfuse': + langfuse_secret_key = os.getenv('LANGFUSE_SECRET_KEY') + if not langfuse_secret_key: + logging.error( + 'Cannot proceed: LANGFUSE_SECRET_KEY env variable is not defined (define it in a .env file)' + ) + sys.exit(1) + langchain_host = os.getenv('LANGFUSE_HOST') + if not langchain_host: + logging.error( + 'Cannot proceed: LANGFUSE_HOST env variable is not defined (define it in a .env file)' + ) + sys.exit(1) + langfuse_public_key = os.getenv('LANGFUSE_PUBLIC_KEY') + if not langfuse_public_key: + logging.error( + 'Cannot proceed: LANGFUSE_PUBLIC_KEY env variable is not defined (define it in a .env file)' + ) + sys.exit(1) + else: logging.error( - 'Cannot proceed: LANGCHAIN_API_KEY env variable is not defined (define it in a .env file)' + 'Cannot proceed: dataset_provider is not valid, only langfuse or langsmith' ) sys.exit(1) - # Check args: # - RAGQuery JSON file rag_query_file_path = Path(cli_args['']) diff --git a/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/ragquery.json.example b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/ragquery.json.example new file mode 100644 index 0000000000..0780246006 --- /dev/null +++ b/gen-ai/orchestrator-server/src/main/python/tock-llm-indexing-tools/ragquery.json.example @@ -0,0 +1,55 @@ +{ + "history": [], + "question_answering_llm_setting": { + "provider": "AzureOpenAIService", + "api_key": { + "type": "Raw", + "value": "*****************" + }, + "model": "gpt-4o", + "deployment_name": "*******************", + "repetition_penalty":1.0, + "max_new_tokens":256, + "api_base": "******************************", + "api_version": "2024-03-01-preview", + "temperature": 0.4 , + "prompt": "Use the following context to answer the question at the end.\nIf you don't know the answer, just say {no_answer}.\n Context: {context}\nQuestion: {question} \n Answer in {locale}:" + }, + "question_answering_prompt_inputs": { + "question": "How to get started playing guitar ?", + "no_answer": "Sorry, I don't know.", + "locale": "French" + }, + "embedding_question_em_setting": { + "provider": "AzureOpenAIService", + "api_key": { + "type": "Raw", + "value": "*****************************" + }, + "deployment_name": "********************", + "api_base": "***********************************", + "api_version": "2024-03-01-preview", + "model": "text-embedding-ada-002" + }, + "document_index_name": "ns-03-bot-cmso", + "document_search_params": { + "provider": "OpenSearch", + "filter": [ + { + "term": { + "metadata.index_session_id.keyword": "****************************************" + } + } + ], + "k": 4 + }, + "observability_setting": { + "provider": "Langfuse", + "url": "http://localhost:3000", + "secret_key":{ + "type": "Raw", + "value": "************************" + }, + "public_key":"********************************" + } +} \ No newline at end of file