From 21c82db6925ebcf2e03c40897158d798879fa8be Mon Sep 17 00:00:00 2001 From: ammar92 Date: Tue, 30 Jan 2024 11:58:30 +0100 Subject: [PATCH 01/85] Update dependencies (#2396) --- boefjes/poetry.lock | 654 +++++---- boefjes/pyproject.toml | 10 +- boefjes/requirements-dev.txt | 587 ++++---- boefjes/requirements.txt | 569 ++++---- bytes/poetry.lock | 499 ++++--- bytes/pyproject.toml | 10 +- bytes/requirements-dev.txt | 416 +++--- bytes/requirements.txt | 401 +++--- keiko/poetry.lock | 299 ++-- keiko/pyproject.toml | 11 +- keiko/requirements-dev.txt | 228 ++- keiko/requirements.txt | 192 ++- mula/poetry.lock | 507 ++++--- mula/pyproject.toml | 4 +- mula/requirements-dev.txt | 484 +++---- mula/requirements.txt | 326 ++--- octopoes/poetry.lock | 540 ++++---- octopoes/pyproject.toml | 10 +- octopoes/requirements-dev.txt | 436 +++--- octopoes/requirements.txt | 221 ++- poetry.lock | 332 ++--- requirements.txt | 326 ++--- rocky/poetry.lock | 2460 ++++++++++++++++----------------- rocky/pyproject.toml | 5 +- rocky/requirements-dev.txt | 2266 +++++++++++++++--------------- rocky/requirements.txt | 1650 +++++++++++----------- 26 files changed, 6564 insertions(+), 6879 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 2b11175f271..590f02499b3 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -2,87 +2,87 @@ [[package]] name = "aiohttp" -version = "3.9.1" +version = "3.9.3" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0"}, - {file = "aiohttp-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f"}, - {file = "aiohttp-3.9.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d"}, - {file = "aiohttp-3.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501"}, - {file = "aiohttp-3.9.1-cp310-cp310-win32.whl", hash = "sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489"}, - {file = "aiohttp-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e"}, - {file = "aiohttp-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d"}, - {file = "aiohttp-3.9.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd"}, - {file = "aiohttp-3.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a"}, - {file = "aiohttp-3.9.1-cp311-cp311-win32.whl", hash = "sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544"}, - {file = "aiohttp-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821"}, - {file = "aiohttp-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c"}, - {file = "aiohttp-3.9.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f"}, - {file = "aiohttp-3.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f"}, - {file = "aiohttp-3.9.1-cp312-cp312-win32.whl", hash = "sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed"}, - {file = "aiohttp-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672"}, - {file = "aiohttp-3.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361"}, - {file = "aiohttp-3.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a"}, - {file = "aiohttp-3.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8"}, - {file = "aiohttp-3.9.1-cp38-cp38-win32.whl", hash = "sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4"}, - {file = "aiohttp-3.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0"}, - {file = "aiohttp-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f"}, - {file = "aiohttp-3.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f"}, - {file = "aiohttp-3.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c"}, - {file = "aiohttp-3.9.1-cp39-cp39-win32.whl", hash = "sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7"}, - {file = "aiohttp-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf"}, - {file = "aiohttp-3.9.1.tar.gz", hash = "sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, + {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, + {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, + {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, + {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, + {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, + {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, + {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, ] [package.dependencies] @@ -517,47 +517,56 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", [[package]] name = "cryptography" -version = "41.0.6" +version = "42.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.6-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c"}, - {file = "cryptography-41.0.6-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d"}, - {file = "cryptography-41.0.6-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c"}, - {file = "cryptography-41.0.6-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596"}, - {file = "cryptography-41.0.6-cp37-abi3-win32.whl", hash = "sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660"}, - {file = "cryptography-41.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4"}, - {file = "cryptography-41.0.6.tar.gz", hash = "sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, + {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, + {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, + {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, + {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, + {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, + {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, ] [package.dependencies] -cffi = ">=1.12" +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -942,24 +951,24 @@ files = [ [[package]] name = "httpcore" -version = "0.16.3" +version = "1.0.2" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, ] [package.dependencies] -anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] [[package]] name = "httpretty" @@ -973,24 +982,25 @@ files = [ [[package]] name = "httpx" -version = "0.23.3" +version = "0.26.0" description = "The next generation HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -1055,13 +1065,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.21.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.0-py3-none-any.whl", hash = "sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c"}, - {file = "jsonschema-4.21.0.tar.gz", hash = "sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1243,71 +1253,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -1765,13 +1775,13 @@ files = [ [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1858,18 +1868,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -1877,116 +1887,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -2083,13 +2067,13 @@ tests = ["pyfakefs", "pytest", "sqlalchemy"] [[package]] name = "pytest" -version = "7.4.4" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -2097,7 +2081,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -2105,20 +2089,21 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no [[package]] name = "pytest-env" -version = "0.8.2" -description = "py.test plugin that allows you to add environment variables." +version = "1.1.3" +description = "pytest plugin that allows you to add environment variables." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest_env-0.8.2-py3-none-any.whl", hash = "sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38"}, - {file = "pytest_env-0.8.2.tar.gz", hash = "sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff"}, + {file = "pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc"}, + {file = "pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b"}, ] [package.dependencies] -pytest = ">=7.3.1" +pytest = ">=7.4.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -test = ["coverage (>=7.2.7)", "pytest-mock (>=3.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "pytest-mock (>=3.12)"] [[package]] name = "python-dateutil" @@ -2136,13 +2121,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -2205,13 +2190,13 @@ files = [ [[package]] name = "referencing" -version = "0.32.1" +version = "0.33.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"}, - {file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -2241,35 +2226,16 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-file" -version = "1.5.1" +version = "2.0.0" description = "File transport adapter for Requests" optional = false python-versions = "*" files = [ - {file = "requests-file-1.5.1.tar.gz", hash = "sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e"}, - {file = "requests_file-1.5.1-py2.py3-none-any.whl", hash = "sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953"}, + {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, ] [package.dependencies] requests = ">=1.0.0" -six = "*" - -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] [[package]] name = "rich" @@ -2598,19 +2564,19 @@ files = [ [[package]] name = "urllib3" -version = "1.26.18" +version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.8" files = [ - {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, - {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, + {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, + {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] [package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "uvicorn" @@ -2888,4 +2854,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "0b97928a41d4176da15a575d94c9c571df849775676dd9d0da1a12d2eaa75e4b" +content-hash = "94e6972faf74802680fafa042c36542b9efc06967cc3ad73816457bfe805d3de" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index 59d46d11a8c..a02fec25f0f 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -9,7 +9,7 @@ license = "EUPL" python = "^3.8" alembic = "^1.8.1" click = "^8.1.3" -httpx = "^0.23.3" +httpx = "^0.26.0" jsonschema = "^4.17.0" pydantic = "^2.4.2" docker = "^6.1.3" @@ -44,13 +44,13 @@ python-libnmap = "0.7.3" # required by kat_shodan boefje shodan = "1.25.0" # required by kat_ssl_certificates boefje -cryptography = "41.0.6" +cryptography = "^42.0.1" # required by kat_webpage_analysis/check_images normalizer Pillow = "^10.0.1" # required by kat_webpage_analysis forcediphttpsadapter = "1.0.2" # required by kat_webpage_analysis (forcediphttpsadapter) -urllib3 = "^1.26.0" +urllib3 = "^2.1.0" # required by kat_website_software python-Wappalyzer = "0.3.1" # required by kat_wpscan @@ -63,8 +63,8 @@ pydantic-settings = "^2.0.3" opentelemetry-instrumentation = "^0.41b0" [tool.poetry.group.dev.dependencies] -pytest = "^7.2.2" -pytest-env = "^0.8.2" +pytest = "^8.0.0" +pytest-env = "^1.1.3" [build-system] requires = ["setuptools>=45", "wheel"] diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 9496611eaec..4d04bc62806 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -1,80 +1,80 @@ -aiohttp==3.9.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f \ - --hash=sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c \ - --hash=sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af \ - --hash=sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4 \ - --hash=sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a \ - --hash=sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489 \ - --hash=sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213 \ - --hash=sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01 \ - --hash=sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5 \ - --hash=sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361 \ - --hash=sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26 \ - --hash=sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0 \ - --hash=sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4 \ - --hash=sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8 \ - --hash=sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1 \ - --hash=sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7 \ - --hash=sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6 \ - --hash=sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a \ - --hash=sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd \ - --hash=sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4 \ - --hash=sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499 \ - --hash=sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183 \ - --hash=sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544 \ - --hash=sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821 \ - --hash=sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501 \ - --hash=sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f \ - --hash=sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe \ - --hash=sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f \ - --hash=sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672 \ - --hash=sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5 \ - --hash=sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2 \ - --hash=sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57 \ - --hash=sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87 \ - --hash=sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0 \ - --hash=sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f \ - --hash=sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7 \ - --hash=sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed \ - --hash=sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70 \ - --hash=sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0 \ - --hash=sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f \ - --hash=sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d \ - --hash=sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f \ - --hash=sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d \ - --hash=sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431 \ - --hash=sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff \ - --hash=sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf \ - --hash=sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83 \ - --hash=sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690 \ - --hash=sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587 \ - --hash=sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e \ - --hash=sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb \ - --hash=sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3 \ - --hash=sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66 \ - --hash=sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014 \ - --hash=sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35 \ - --hash=sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f \ - --hash=sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0 \ - --hash=sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449 \ - --hash=sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23 \ - --hash=sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5 \ - --hash=sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd \ - --hash=sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4 \ - --hash=sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b \ - --hash=sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558 \ - --hash=sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd \ - --hash=sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766 \ - --hash=sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a \ - --hash=sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636 \ - --hash=sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d \ - --hash=sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590 \ - --hash=sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e \ - --hash=sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d \ - --hash=sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c \ - --hash=sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28 \ - --hash=sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065 \ - --hash=sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca +aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168 \ + --hash=sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb \ + --hash=sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5 \ + --hash=sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f \ + --hash=sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc \ + --hash=sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c \ + --hash=sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29 \ + --hash=sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4 \ + --hash=sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc \ + --hash=sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc \ + --hash=sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63 \ + --hash=sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e \ + --hash=sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d \ + --hash=sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a \ + --hash=sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60 \ + --hash=sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38 \ + --hash=sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b \ + --hash=sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2 \ + --hash=sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53 \ + --hash=sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5 \ + --hash=sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4 \ + --hash=sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96 \ + --hash=sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58 \ + --hash=sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa \ + --hash=sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321 \ + --hash=sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae \ + --hash=sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce \ + --hash=sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8 \ + --hash=sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194 \ + --hash=sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c \ + --hash=sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf \ + --hash=sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d \ + --hash=sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869 \ + --hash=sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b \ + --hash=sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52 \ + --hash=sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528 \ + --hash=sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5 \ + --hash=sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1 \ + --hash=sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4 \ + --hash=sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8 \ + --hash=sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d \ + --hash=sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7 \ + --hash=sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5 \ + --hash=sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54 \ + --hash=sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3 \ + --hash=sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5 \ + --hash=sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c \ + --hash=sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29 \ + --hash=sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3 \ + --hash=sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747 \ + --hash=sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672 \ + --hash=sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5 \ + --hash=sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11 \ + --hash=sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca \ + --hash=sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768 \ + --hash=sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6 \ + --hash=sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2 \ + --hash=sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533 \ + --hash=sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6 \ + --hash=sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266 \ + --hash=sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d \ + --hash=sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec \ + --hash=sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5 \ + --hash=sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1 \ + --hash=sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b \ + --hash=sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679 \ + --hash=sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283 \ + --hash=sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb \ + --hash=sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b \ + --hash=sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3 \ + --hash=sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051 \ + --hash=sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511 \ + --hash=sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e \ + --hash=sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d \ + --hash=sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542 \ + --hash=sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f aioresponses==0.7.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d2c26defbb9b440ea2685ec132e90700907fd10bcca3e85ec2f157219f0d26f7 \ --hash=sha256:f795d9dbda2d61774840e7e32f5366f45752d1adc1b74c9362afd017296c7ee1 @@ -270,30 +270,39 @@ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==41.0.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \ - --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \ - --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \ - --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \ - --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \ - --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \ - --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \ - --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \ - --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \ - --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \ - --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \ - --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \ - --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \ - --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \ - --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \ - --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \ - --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \ - --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \ - --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \ - --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \ - --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \ - --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \ - --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -515,14 +524,14 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 httpretty==1.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -538,9 +547,9 @@ iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 langcodes==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4d89fc9acb6e9c8fdef70bcdf376113a3db09b67285d9e1d534de6d8818e7e69 \ --hash=sha256:794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6 @@ -629,67 +638,67 @@ mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -887,9 +896,9 @@ pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ @@ -924,118 +933,92 @@ pybinaryedge==0.5 ; python_version >= "3.8" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pydicom==2.4.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 @@ -1056,18 +1039,18 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ pynetdicom==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:231212e9b9c5e0debf2af4f17d8afa14ecd1b262a11cdb891b2b2b15f7ab5939 \ --hash=sha256:6726173d25a51f66f2a4557d816c0f93b3b2a8435ce3d319e6cdd8e48bf657d5 -pytest-env==0.8.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38 \ - --hash=sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ - --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 +pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ + --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b +pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ + --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a python-libnmap==0.7.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d03629256c2ee9ab37390c28d4c4c2ae9637cd0861dd8ab9e0f32779545936c0 python-wappalyzer==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ @@ -1088,18 +1071,14 @@ pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platfo --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 -referencing==0.32.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 -requests-file==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e \ - --hash=sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953 +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 +requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 @@ -1258,9 +1237,9 @@ tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" \ typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==1.26.18 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \ - --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0 +urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ + --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index 481ab6cd6aa..05561ca4271 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -1,80 +1,80 @@ -aiohttp==3.9.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:02ab6006ec3c3463b528374c4cdce86434e7b89ad355e7bf29e2f16b46c7dd6f \ - --hash=sha256:04fa38875e53eb7e354ece1607b1d2fdee2d175ea4e4d745f6ec9f751fe20c7c \ - --hash=sha256:0b0a6a36ed7e164c6df1e18ee47afbd1990ce47cb428739d6c99aaabfaf1b3af \ - --hash=sha256:0d406b01a9f5a7e232d1b0d161b40c05275ffbcbd772dc18c1d5a570961a1ca4 \ - --hash=sha256:0e49b08eafa4f5707ecfb321ab9592717a319e37938e301d462f79b4e860c32a \ - --hash=sha256:0e7ba7ff228c0d9a2cd66194e90f2bca6e0abca810b786901a569c0de082f489 \ - --hash=sha256:11cb254e397a82efb1805d12561e80124928e04e9c4483587ce7390b3866d213 \ - --hash=sha256:11ff168d752cb41e8492817e10fb4f85828f6a0142b9726a30c27c35a1835f01 \ - --hash=sha256:176df045597e674fa950bf5ae536be85699e04cea68fa3a616cf75e413737eb5 \ - --hash=sha256:219a16763dc0294842188ac8a12262b5671817042b35d45e44fd0a697d8c8361 \ - --hash=sha256:22698f01ff5653fe66d16ffb7658f582a0ac084d7da1323e39fd9eab326a1f26 \ - --hash=sha256:237533179d9747080bcaad4d02083ce295c0d2eab3e9e8ce103411a4312991a0 \ - --hash=sha256:289ba9ae8e88d0ba16062ecf02dd730b34186ea3b1e7489046fc338bdc3361c4 \ - --hash=sha256:2c59e0076ea31c08553e868cec02d22191c086f00b44610f8ab7363a11a5d9d8 \ - --hash=sha256:2c9376e2b09895c8ca8b95362283365eb5c03bdc8428ade80a864160605715f1 \ - --hash=sha256:3135713c5562731ee18f58d3ad1bf41e1d8883eb68b363f2ffde5b2ea4b84cc7 \ - --hash=sha256:3b9c7426923bb7bd66d409da46c41e3fb40f5caf679da624439b9eba92043fa6 \ - --hash=sha256:3c0266cd6f005e99f3f51e583012de2778e65af6b73860038b968a0a8888487a \ - --hash=sha256:41473de252e1797c2d2293804e389a6d6986ef37cbb4a25208de537ae32141dd \ - --hash=sha256:4831df72b053b1eed31eb00a2e1aff6896fb4485301d4ccb208cac264b648db4 \ - --hash=sha256:49f0c1b3c2842556e5de35f122fc0f0b721334ceb6e78c3719693364d4af8499 \ - --hash=sha256:4b4c452d0190c5a820d3f5c0f3cd8a28ace48c54053e24da9d6041bf81113183 \ - --hash=sha256:4ee8caa925aebc1e64e98432d78ea8de67b2272252b0a931d2ac3bd876ad5544 \ - --hash=sha256:500f1c59906cd142d452074f3811614be04819a38ae2b3239a48b82649c08821 \ - --hash=sha256:5216b6082c624b55cfe79af5d538e499cd5f5b976820eac31951fb4325974501 \ - --hash=sha256:54311eb54f3a0c45efb9ed0d0a8f43d1bc6060d773f6973efd90037a51cd0a3f \ - --hash=sha256:54631fb69a6e44b2ba522f7c22a6fb2667a02fd97d636048478db2fd8c4e98fe \ - --hash=sha256:565760d6812b8d78d416c3c7cfdf5362fbe0d0d25b82fed75d0d29e18d7fc30f \ - --hash=sha256:598db66eaf2e04aa0c8900a63b0101fdc5e6b8a7ddd805c56d86efb54eb66672 \ - --hash=sha256:5c4fa235d534b3547184831c624c0b7c1e262cd1de847d95085ec94c16fddcd5 \ - --hash=sha256:69985d50a2b6f709412d944ffb2e97d0be154ea90600b7a921f95a87d6f108a2 \ - --hash=sha256:69da0f3ed3496808e8cbc5123a866c41c12c15baaaead96d256477edf168eb57 \ - --hash=sha256:6c93b7c2e52061f0925c3382d5cb8980e40f91c989563d3d32ca280069fd6a87 \ - --hash=sha256:70907533db712f7aa791effb38efa96f044ce3d4e850e2d7691abd759f4f0ae0 \ - --hash=sha256:81b77f868814346662c96ab36b875d7814ebf82340d3284a31681085c051320f \ - --hash=sha256:82eefaf1a996060602f3cc1112d93ba8b201dbf5d8fd9611227de2003dddb3b7 \ - --hash=sha256:85c3e3c9cb1d480e0b9a64c658cd66b3cfb8e721636ab8b0e746e2d79a7a9eed \ - --hash=sha256:8a22a34bc594d9d24621091d1b91511001a7eea91d6652ea495ce06e27381f70 \ - --hash=sha256:8cef8710fb849d97c533f259103f09bac167a008d7131d7b2b0e3a33269185c0 \ - --hash=sha256:8d44e7bf06b0c0a70a20f9100af9fcfd7f6d9d3913e37754c12d424179b4e48f \ - --hash=sha256:8d7f98fde213f74561be1d6d3fa353656197f75d4edfbb3d94c9eb9b0fc47f5d \ - --hash=sha256:8d8e4450e7fe24d86e86b23cc209e0023177b6d59502e33807b732d2deb6975f \ - --hash=sha256:8fc49a87ac269d4529da45871e2ffb6874e87779c3d0e2ccd813c0899221239d \ - --hash=sha256:90ec72d231169b4b8d6085be13023ece8fa9b1bb495e4398d847e25218e0f431 \ - --hash=sha256:91c742ca59045dce7ba76cab6e223e41d2c70d79e82c284a96411f8645e2afff \ - --hash=sha256:9b05d33ff8e6b269e30a7957bd3244ffbce2a7a35a81b81c382629b80af1a8bf \ - --hash=sha256:9b05d5cbe9dafcdc733262c3a99ccf63d2f7ce02543620d2bd8db4d4f7a22f83 \ - --hash=sha256:9c5857612c9813796960c00767645cb5da815af16dafb32d70c72a8390bbf690 \ - --hash=sha256:a34086c5cc285be878622e0a6ab897a986a6e8bf5b67ecb377015f06ed316587 \ - --hash=sha256:ab221850108a4a063c5b8a70f00dd7a1975e5a1713f87f4ab26a46e5feac5a0e \ - --hash=sha256:b796b44111f0cab6bbf66214186e44734b5baab949cb5fb56154142a92989aeb \ - --hash=sha256:b8c3a67eb87394386847d188996920f33b01b32155f0a94f36ca0e0c635bf3e3 \ - --hash=sha256:bcb6532b9814ea7c5a6a3299747c49de30e84472fa72821b07f5a9818bce0f66 \ - --hash=sha256:bcc0ea8d5b74a41b621ad4a13d96c36079c81628ccc0b30cfb1603e3dfa3a014 \ - --hash=sha256:bea94403a21eb94c93386d559bce297381609153e418a3ffc7d6bf772f59cc35 \ - --hash=sha256:bff7e2811814fa2271be95ab6e84c9436d027a0e59665de60edf44e529a42c1f \ - --hash=sha256:c72444d17777865734aa1a4d167794c34b63e5883abb90356a0364a28904e6c0 \ - --hash=sha256:c7b5d5d64e2a14e35a9240b33b89389e0035e6de8dbb7ffa50d10d8b65c57449 \ - --hash=sha256:c7e939f1ae428a86e4abbb9a7c4732bf4706048818dfd979e5e2839ce0159f23 \ - --hash=sha256:c88a15f272a0ad3d7773cf3a37cc7b7d077cbfc8e331675cf1346e849d97a4e5 \ - --hash=sha256:c9110c06eaaac7e1f5562caf481f18ccf8f6fdf4c3323feab28a93d34cc646bd \ - --hash=sha256:ca7ca5abfbfe8d39e653870fbe8d7710be7a857f8a8386fc9de1aae2e02ce7e4 \ - --hash=sha256:cae4c0c2ca800c793cae07ef3d40794625471040a87e1ba392039639ad61ab5b \ - --hash=sha256:cdefe289681507187e375a5064c7599f52c40343a8701761c802c1853a504558 \ - --hash=sha256:cf2a0ac0615842b849f40c4d7f304986a242f1e68286dbf3bd7a835e4f83acfd \ - --hash=sha256:cfeadf42840c1e870dc2042a232a8748e75a36b52d78968cda6736de55582766 \ - --hash=sha256:d737e69d193dac7296365a6dcb73bbbf53bb760ab25a3727716bbd42022e8d7a \ - --hash=sha256:d7481f581251bb5558ba9f635db70908819caa221fc79ee52a7f58392778c636 \ - --hash=sha256:df9cf74b9bc03d586fc53ba470828d7b77ce51b0582d1d0b5b2fb673c0baa32d \ - --hash=sha256:e1f80197f8b0b846a8d5cf7b7ec6084493950d0882cc5537fb7b96a69e3c8590 \ - --hash=sha256:ecca113f19d5e74048c001934045a2b9368d77b0b17691d905af18bd1c21275e \ - --hash=sha256:ee2527134f95e106cc1653e9ac78846f3a2ec1004cf20ef4e02038035a74544d \ - --hash=sha256:f27fdaadce22f2ef950fc10dcdf8048407c3b42b73779e48a4e76b3c35bca26c \ - --hash=sha256:f694dc8a6a3112059258a725a4ebe9acac5fe62f11c77ac4dcf896edfa78ca28 \ - --hash=sha256:f800164276eec54e0af5c99feb9494c295118fc10a11b997bbb1348ba1a52065 \ - --hash=sha256:ffcd828e37dc219a72c9012ec44ad2e7e3066bec6ff3aaa19e7d435dbf4032ca +aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168 \ + --hash=sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb \ + --hash=sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5 \ + --hash=sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f \ + --hash=sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc \ + --hash=sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c \ + --hash=sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29 \ + --hash=sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4 \ + --hash=sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc \ + --hash=sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc \ + --hash=sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63 \ + --hash=sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e \ + --hash=sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d \ + --hash=sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a \ + --hash=sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60 \ + --hash=sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38 \ + --hash=sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b \ + --hash=sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2 \ + --hash=sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53 \ + --hash=sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5 \ + --hash=sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4 \ + --hash=sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96 \ + --hash=sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58 \ + --hash=sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa \ + --hash=sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321 \ + --hash=sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae \ + --hash=sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce \ + --hash=sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8 \ + --hash=sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194 \ + --hash=sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c \ + --hash=sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf \ + --hash=sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d \ + --hash=sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869 \ + --hash=sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b \ + --hash=sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52 \ + --hash=sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528 \ + --hash=sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5 \ + --hash=sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1 \ + --hash=sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4 \ + --hash=sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8 \ + --hash=sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d \ + --hash=sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7 \ + --hash=sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5 \ + --hash=sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54 \ + --hash=sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3 \ + --hash=sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5 \ + --hash=sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c \ + --hash=sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29 \ + --hash=sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3 \ + --hash=sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747 \ + --hash=sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672 \ + --hash=sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5 \ + --hash=sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11 \ + --hash=sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca \ + --hash=sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768 \ + --hash=sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6 \ + --hash=sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2 \ + --hash=sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533 \ + --hash=sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6 \ + --hash=sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266 \ + --hash=sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d \ + --hash=sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec \ + --hash=sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5 \ + --hash=sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1 \ + --hash=sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b \ + --hash=sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679 \ + --hash=sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283 \ + --hash=sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb \ + --hash=sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b \ + --hash=sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3 \ + --hash=sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051 \ + --hash=sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511 \ + --hash=sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e \ + --hash=sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d \ + --hash=sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542 \ + --hash=sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f aioresponses==0.7.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d2c26defbb9b440ea2685ec132e90700907fd10bcca3e85ec2f157219f0d26f7 \ --hash=sha256:f795d9dbda2d61774840e7e32f5366f45752d1adc1b74c9362afd017296c7ee1 @@ -270,30 +270,39 @@ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==41.0.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \ - --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \ - --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \ - --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \ - --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \ - --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \ - --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \ - --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \ - --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \ - --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \ - --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \ - --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \ - --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \ - --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \ - --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \ - --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \ - --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \ - --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \ - --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \ - --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \ - --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \ - --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \ - --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -515,14 +524,14 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 httpretty==1.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -535,9 +544,9 @@ importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 langcodes==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4d89fc9acb6e9c8fdef70bcdf376113a3db09b67285d9e1d534de6d8818e7e69 \ --hash=sha256:794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6 @@ -626,67 +635,67 @@ mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -918,118 +927,92 @@ pybinaryedge==0.5 ; python_version >= "3.8" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pydicom==2.4.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 @@ -1053,9 +1036,9 @@ pynetdicom==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a python-libnmap==0.7.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d03629256c2ee9ab37390c28d4c4c2ae9637cd0861dd8ab9e0f32779545936c0 python-wappalyzer==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ @@ -1076,18 +1059,14 @@ pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platfo --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 -referencing==0.32.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 -requests-file==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e \ - --hash=sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953 +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 +requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 @@ -1243,9 +1222,9 @@ tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==1.26.18 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07 \ - --hash=sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0 +urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ + --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 5afe2b1b3c8..13eaade40d0 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -37,24 +37,25 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "anyio" -version = "3.7.1" +version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "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.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "asgiref" @@ -374,47 +375,56 @@ files = [ [[package]] name = "cryptography" -version = "41.0.7" +version = "42.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, - {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, - {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, - {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, - {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, - {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, - {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, - {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, - {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, - {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, + {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, + {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, + {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, + {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, + {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, + {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, ] [package.dependencies] -cffi = ">=1.12" +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] @@ -658,45 +668,46 @@ files = [ [[package]] name = "httpcore" -version = "0.16.3" +version = "1.0.2" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, ] [package.dependencies] -anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.26.0" description = "The next generation HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -840,71 +851,71 @@ testing = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -1231,13 +1242,13 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1338,18 +1349,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -1357,116 +1368,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -1529,13 +1514,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.4.4" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -1543,12 +1528,30 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-env" +version = "1.1.3" +description = "pytest plugin that allows you to add environment variables." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc"}, + {file = "pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b"}, +] + +[package.dependencies] +pytest = ">=7.4.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + +[package.extras] +test = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "pytest-mock (>=3.12)"] + [[package]] name = "python-dateutil" version = "2.8.2" @@ -1565,13 +1568,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1652,23 +1655,6 @@ pyasn1-modules = "*" python-dateutil = "*" requests = "*" -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "rsa" version = "4.9" @@ -1819,17 +1805,6 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -[[package]] -name = "toolz" -version = "0.12.0" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.5" -files = [ - {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, - {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, -] - [[package]] name = "typing-extensions" version = "4.9.0" @@ -1973,4 +1948,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "1f4fea65d34692ab3b8f5ab6d2f7fc4e158a3b957ee44512d4f43ee63d0dd7ac" +content-hash = "073bb5edb809027a7aad5a37a27620bba1a1711e77b6fd3a07f346ce328b9d01" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index d7e476c3b44..ac3bb41e011 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -8,7 +8,7 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.8" alembic = "^1.8.1" -anyio = "^3.6.2" +anyio = "^4.2.0" asgiref = "^3.5.2" bcrypt = "^4.0.1" cachetools = "^5.3.1" @@ -16,7 +16,7 @@ certifi = "^2023.7.22" cffi = "^1.15.1" charset-normalizer = "^3.1.0" click = "^8.1.3" -cryptography = "^41.0.6" +cryptography = "^42.0.1" ecdsa = "^0.18.0" fastapi = "^0.109.0" greenlet = "^2.0.1" @@ -43,11 +43,10 @@ rsa = "^4.9" six = "^1.16.0" sniffio = "^1.3.0" sqlalchemy = "^1.4.48" -toolz = "^0.12.0" urllib3 = "^2.0.3" uvicorn = "^0.26.0" zipp = "^3.8.1" -httpx = "^0.23.3" +httpx = "^0.26.0" # OpenTelemetry opentelemetry-sdk = "^1.19.0" @@ -72,11 +71,12 @@ pathspec = "^0.9.0" platformdirs = "^3.0.0" pluggy = "^1.0.0" pyparsing = "^3.0.9" -pytest = "^7.2.2" +pytest = "^8.0.0" setuptools = "^68.0.0" toml = "^0.10.2" tomli = "^2.0.1" wrapt = "^1.14.1" +pytest-env = "^1.1.3" [build-system] requires = ["setuptools>=65", "wheel"] diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index e7a87bce702..1212a6e94ef 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -203,30 +203,39 @@ click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==41.0.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960 \ - --hash=sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a \ - --hash=sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc \ - --hash=sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a \ - --hash=sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf \ - --hash=sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1 \ - --hash=sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39 \ - --hash=sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406 \ - --hash=sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a \ - --hash=sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a \ - --hash=sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c \ - --hash=sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be \ - --hash=sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15 \ - --hash=sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2 \ - --hash=sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d \ - --hash=sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157 \ - --hash=sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003 \ - --hash=sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248 \ - --hash=sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a \ - --hash=sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec \ - --hash=sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309 \ - --hash=sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7 \ - --hash=sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -365,12 +374,12 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.13.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -427,67 +436,67 @@ lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e @@ -548,9 +557,9 @@ pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be prometheus-client==0.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 @@ -589,118 +598,92 @@ pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -715,15 +698,18 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ - --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 +pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ + --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b +pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ + --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a python-jose[cryptography]==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a @@ -736,9 +722,6 @@ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ rfc3161ng==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e88614da61b22abd591577f9dd39d3a030335f9e8a12d8bc001149c17d0a01e \ --hash=sha256:81fe7e4488f523c758b1206bf5e72ba2066b78f2812107b1b7bb16a7596e524b -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rsa==4.9 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 @@ -786,9 +769,6 @@ toml==0.10.2 ; python_version >= "3.8" and python_version < "4.0" \ tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -toolz==0.12.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ - --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 58045eb6912..01a09d24d44 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -197,30 +197,39 @@ click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==41.0.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960 \ - --hash=sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a \ - --hash=sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc \ - --hash=sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a \ - --hash=sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf \ - --hash=sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1 \ - --hash=sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39 \ - --hash=sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406 \ - --hash=sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a \ - --hash=sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a \ - --hash=sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c \ - --hash=sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be \ - --hash=sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15 \ - --hash=sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2 \ - --hash=sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d \ - --hash=sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157 \ - --hash=sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003 \ - --hash=sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248 \ - --hash=sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a \ - --hash=sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec \ - --hash=sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309 \ - --hash=sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7 \ - --hash=sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -359,12 +368,12 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.13.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -377,67 +386,67 @@ importlib-resources==5.13.0 ; python_version >= "3.8" and python_version < "4.0" mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -521,118 +530,92 @@ pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -647,9 +630,9 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a python-jose[cryptography]==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a @@ -662,9 +645,6 @@ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ rfc3161ng==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e88614da61b22abd591577f9dd39d3a030335f9e8a12d8bc001149c17d0a01e \ --hash=sha256:81fe7e4488f523c758b1206bf5e72ba2066b78f2812107b1b7bb16a7596e524b -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rsa==4.9 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 @@ -706,9 +686,6 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 -toolz==0.12.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ - --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd diff --git a/keiko/poetry.lock b/keiko/poetry.lock index ce0eb9d83aa..11f46276744 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -345,45 +345,46 @@ files = [ [[package]] name = "httpcore" -version = "0.16.3" +version = "1.0.2" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, ] [package.dependencies] -anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.26.0" description = "The next generation HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -849,18 +850,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -868,116 +869,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -1015,13 +990,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pytest" -version = "7.4.4" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -1029,12 +1004,27 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "pytest-dotenv" +version = "0.5.2" +description = "A py.test plugin that parses environment files before running tests" +optional = false +python-versions = "*" +files = [ + {file = "pytest-dotenv-0.5.2.tar.gz", hash = "sha256:2dc6c3ac6d8764c71c6d2804e902d0ff810fa19692e95fe138aefc9b1aa73732"}, + {file = "pytest_dotenv-0.5.2-py3-none-any.whl", hash = "sha256:40a2cece120a213898afaa5407673f6bd924b1fa7eafce6bda0e8abffe2f710f"}, +] + +[package.dependencies] +pytest = ">=5.0.0" +python-dotenv = ">=0.9.1" + [[package]] name = "python-dotenv" version = "1.0.0" @@ -1070,23 +1060,6 @@ urllib3 = ">=1.21.1,<3" socks = ["PySocks (>=1.5.6,!=1.5.7)"] use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "rich" version = "13.7.0" @@ -1127,13 +1100,13 @@ typer = ["typer (>=0.4)"] [[package]] name = "robotframework" -version = "6.1.1" +version = "7.0" description = "Generic automation framework for acceptance testing and robotic process automation (RPA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "robotframework-6.1.1-py3-none-any.whl", hash = "sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7"}, - {file = "robotframework-6.1.1.zip", hash = "sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789"}, + {file = "robotframework-7.0-py3-none-any.whl", hash = "sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41"}, + {file = "robotframework-7.0.zip", hash = "sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5"}, ] [[package]] @@ -1171,26 +1144,28 @@ test = ["coverage", "flake8", "flask", "pytest", "robotframework (>=3.2.1)", "si [[package]] name = "robotframework-tidy" -version = "3.5.0" +version = "4.8.1" description = "Code autoformatter for Robot Framework" optional = false python-versions = ">=3.7" files = [ - {file = "robotframework-tidy-3.5.0.tar.gz", hash = "sha256:8748c80fa2c22b455dfcf7f7ee724d019f52d2d17ba66f38f0167aecd0c217e6"}, - {file = "robotframework_tidy-3.5.0-py3-none-any.whl", hash = "sha256:7db2699d01b8c08ba638d54c3a2e167e5b61c5d9c9cde3d549c23c16709ade5b"}, + {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, + {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, ] [package.dependencies] -click = ">=8.1.3" -colorama = ">=0.4.3" -pathspec = ">=0.9.0,<0.12.0" -rich-click = "1.4" +click = "==8.1.*" +colorama = ">=0.4.3,<0.4.7" +jinja2 = ">=3.1.3,<4.0" +pathspec = ">=0.9.0,<0.12.2" +rich-click = ">=1.4,<1.7.4" robotframework = ">=4.0" -tomli = ">=2.0.0" +tomli = "==2.0.*" [package.extras] -dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (==2.4.*)", "pylama", "pytest"] -doc = ["furo", "sphinx", "sphinx-copybutton (==0.3.3)", "sphinx-design"] +dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (>=2.4,<3.3)", "pylama", "pytest", "tomli-w (==1.0.*)"] +doc = ["furo", "sphinx", "sphinx-copybutton (==0.5.2)", "sphinx-design"] +generate-config = ["tomli-w (==1.0.*)"] [[package]] name = "setuptools" @@ -1402,4 +1377,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "a44fa99f36cc6d5327a52113768f1b197c60010609a29b0c21556973d80c535b" +content-hash = "b584a2e40ef373eabafe93ce236da8435c461d521843d33206e200190b0d1bb3" diff --git a/keiko/pyproject.toml b/keiko/pyproject.toml index 27010538795..14797af7ace 100644 --- a/keiko/pyproject.toml +++ b/keiko/pyproject.toml @@ -8,7 +8,7 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.8" click = "^8.1.3" -pydantic = "^2.4.2" +pydantic = "^2.6.0" Jinja2 = "^3.1.3" fastapi = "^0.109.0" uvicorn = "^0.26.0" @@ -23,12 +23,13 @@ opentelemetry-instrumentation-psycopg2 = "^0.41b0" pydantic-settings = "^2.0.3" [tool.poetry.group.dev.dependencies] -pytest = "^7.2.2" -robotframework-tidy = "^3.2" -robotframework = "^6.0.1" +pytest = "^8.0.0" +robotframework-tidy = "^4.8.1" +robotframework = "^7.0" robotframework-debuglibrary = "^2.3.0" robotframework-requests = "^0.9.3" -httpx = "^0.23.3" +httpx = "^0.26.0" +pytest-dotenv = "^0.5.2" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index 77f5cdfb218..4e574018988 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -180,12 +180,12 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -328,133 +328,107 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ - --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 +pytest-dotenv==0.5.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2dc6c3ac6d8764c71c6d2804e902d0ff810fa19692e95fe138aefc9b1aa73732 \ + --hash=sha256:40a2cece120a213898afaa5407673f6bd924b1fa7eafce6bda0e8abffe2f710f +pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ + --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rich-click==1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 @@ -467,12 +441,12 @@ robotframework-debuglibrary==2.5.0 ; python_version >= "3.8" and python_version robotframework-requests==0.9.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:7db2699d01b8c08ba638d54c3a2e167e5b61c5d9c9cde3d549c23c16709ade5b \ - --hash=sha256:8748c80fa2c22b455dfcf7f7ee724d019f52d2d17ba66f38f0167aecd0c217e6 -robotframework==6.1.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789 \ - --hash=sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7 +robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ + --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 +robotframework==7.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ + --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 diff --git a/keiko/requirements.txt b/keiko/requirements.txt index 024aa3ebcc9..ca655a47890 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -301,118 +301,92 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a diff --git a/mula/poetry.lock b/mula/poetry.lock index b217f466eba..e57cb891558 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -37,24 +37,25 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "anyio" -version = "3.7.1" +version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "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.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "asgiref" @@ -221,63 +222,63 @@ files = [ [[package]] name = "coverage" -version = "7.4.0" +version = "7.4.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a"}, - {file = "coverage-7.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43"}, - {file = "coverage-7.4.0-cp310-cp310-win32.whl", hash = "sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451"}, - {file = "coverage-7.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26"}, - {file = "coverage-7.4.0-cp311-cp311-win32.whl", hash = "sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614"}, - {file = "coverage-7.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa"}, - {file = "coverage-7.4.0-cp312-cp312-win32.whl", hash = "sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450"}, - {file = "coverage-7.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105"}, - {file = "coverage-7.4.0-cp38-cp38-win32.whl", hash = "sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2"}, - {file = "coverage-7.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f"}, - {file = "coverage-7.4.0-cp39-cp39-win32.whl", hash = "sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932"}, - {file = "coverage-7.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e"}, - {file = "coverage-7.4.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6"}, - {file = "coverage-7.4.0.tar.gz", hash = "sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.dependencies] @@ -348,13 +349,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "22.2.0" +version = "22.6.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-22.2.0-py3-none-any.whl", hash = "sha256:2c2b7a8e55368defd718226bd5b48ef31b2d082c2900ccb4200987e433be500e"}, - {file = "Faker-22.2.0.tar.gz", hash = "sha256:fab78f435d27fa7bd109b095eea3504477e4149051c903fd63f11ce252e3d9b7"}, + {file = "Faker-22.6.0-py3-none-any.whl", hash = "sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d"}, + {file = "Faker-22.6.0.tar.gz", hash = "sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26"}, ] [package.dependencies] @@ -670,71 +671,71 @@ testing = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -1085,13 +1086,13 @@ twisted = ["twisted"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1134,27 +1135,27 @@ files = [ [[package]] name = "psutil" -version = "5.9.7" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "psutil-5.9.7-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056"}, - {file = "psutil-5.9.7-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df"}, - {file = "psutil-5.9.7-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7"}, - {file = "psutil-5.9.7-cp27-none-win32.whl", hash = "sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c"}, - {file = "psutil-5.9.7-cp27-none-win_amd64.whl", hash = "sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6"}, - {file = "psutil-5.9.7-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284"}, - {file = "psutil-5.9.7-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe"}, - {file = "psutil-5.9.7-cp36-cp36m-win32.whl", hash = "sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9"}, - {file = "psutil-5.9.7-cp36-cp36m-win_amd64.whl", hash = "sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e"}, - {file = "psutil-5.9.7-cp37-abi3-win32.whl", hash = "sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68"}, - {file = "psutil-5.9.7-cp37-abi3-win_amd64.whl", hash = "sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414"}, - {file = "psutil-5.9.7-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340"}, - {file = "psutil-5.9.7.tar.gz", hash = "sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c"}, + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -1184,18 +1185,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -1203,116 +1204,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -1335,13 +1310,13 @@ python-dotenv = ">=0.21.0" [[package]] name = "pytest" -version = "7.4.4" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -1349,7 +1324,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -1389,13 +1364,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1749,4 +1724,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "e5fce4ba08b58cf5999ab6d79d391dcc765ee9fa7f625de1d1b7aca0498a4888" +content-hash = "d13c4fbcd2662389b60dafaaa9835d5777f76817ca1f32e198817958e8e4f063" diff --git a/mula/pyproject.toml b/mula/pyproject.toml index 8d127dfa38e..95cc09d0cbb 100644 --- a/mula/pyproject.toml +++ b/mula/pyproject.toml @@ -13,7 +13,7 @@ mmh3 = "^4.0.1" pika = "^1.3.2" prometheus-client = "^0.19.0" psycopg2 = "^2.9.9" -pydantic = "^2.5.2" +pydantic = "^2.6.0" pydantic-settings= "^2.1.0" python-dotenv = "^1.0.0" requests = "^2.31.0" @@ -35,7 +35,7 @@ opentelemetry-instrumentation = "^0.41b0" factory_boy = "^3.2.1" click = "^8.0.4" psutil = "^5.9.5" -pytest = "^7.2.2" +pytest = "^8.0.0" pytest-cov = "^4.0.0" httpx = "^0.26.0" diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index dd7389f2db7..7977c34e3c7 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -113,59 +113,59 @@ click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca \ - --hash=sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471 \ - --hash=sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a \ - --hash=sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058 \ - --hash=sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85 \ - --hash=sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143 \ - --hash=sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446 \ - --hash=sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590 \ - --hash=sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a \ - --hash=sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105 \ - --hash=sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9 \ - --hash=sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a \ - --hash=sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac \ - --hash=sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25 \ - --hash=sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2 \ - --hash=sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450 \ - --hash=sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932 \ - --hash=sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba \ - --hash=sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137 \ - --hash=sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae \ - --hash=sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614 \ - --hash=sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70 \ - --hash=sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e \ - --hash=sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505 \ - --hash=sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870 \ - --hash=sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc \ - --hash=sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451 \ - --hash=sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7 \ - --hash=sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e \ - --hash=sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566 \ - --hash=sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5 \ - --hash=sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26 \ - --hash=sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2 \ - --hash=sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42 \ - --hash=sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555 \ - --hash=sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43 \ - --hash=sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed \ - --hash=sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa \ - --hash=sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516 \ - --hash=sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952 \ - --hash=sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd \ - --hash=sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09 \ - --hash=sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c \ - --hash=sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f \ - --hash=sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6 \ - --hash=sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1 \ - --hash=sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0 \ - --hash=sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e \ - --hash=sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9 \ - --hash=sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9 \ - --hash=sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e \ - --hash=sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06 +coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ + --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ + --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ + --hash=sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7 \ + --hash=sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75 \ + --hash=sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd \ + --hash=sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35 \ + --hash=sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04 \ + --hash=sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6 \ + --hash=sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042 \ + --hash=sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166 \ + --hash=sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1 \ + --hash=sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d \ + --hash=sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c \ + --hash=sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66 \ + --hash=sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70 \ + --hash=sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1 \ + --hash=sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676 \ + --hash=sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630 \ + --hash=sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a \ + --hash=sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74 \ + --hash=sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad \ + --hash=sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19 \ + --hash=sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6 \ + --hash=sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448 \ + --hash=sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018 \ + --hash=sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218 \ + --hash=sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756 \ + --hash=sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54 \ + --hash=sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45 \ + --hash=sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628 \ + --hash=sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968 \ + --hash=sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d \ + --hash=sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25 \ + --hash=sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60 \ + --hash=sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950 \ + --hash=sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06 \ + --hash=sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295 \ + --hash=sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b \ + --hash=sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c \ + --hash=sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc \ + --hash=sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74 \ + --hash=sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1 \ + --hash=sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee \ + --hash=sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011 \ + --hash=sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156 \ + --hash=sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766 \ + --hash=sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5 \ + --hash=sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581 \ + --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ + --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ + --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -178,9 +178,9 @@ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==22.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2c2b7a8e55368defd718226bd5b48ef31b2d082c2900ccb4200987e433be500e \ - --hash=sha256:fab78f435d27fa7bd109b095eea3504477e4149051c903fd63f11ce252e3d9b7 +faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ + --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 @@ -325,67 +325,67 @@ iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ @@ -512,9 +512,9 @@ packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be prometheus-client==0.19.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1 \ --hash=sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92 @@ -530,23 +530,23 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psutil==5.9.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:032f4f2c909818c86cea4fe2cc407f1c0f0cde8e6c6d702b28b8ce0c0d143340 \ - --hash=sha256:0bd41bf2d1463dfa535942b2a8f0e958acf6607ac0be52265ab31f7923bcd5e6 \ - --hash=sha256:1132704b876e58d277168cd729d64750633d5ff0183acf5b3c986b8466cd0284 \ - --hash=sha256:1d4bc4a0148fdd7fd8f38e0498639ae128e64538faa507df25a20f8f7fb2341c \ - --hash=sha256:3c4747a3e2ead1589e647e64aad601981f01b68f9398ddf94d01e3dc0d1e57c7 \ - --hash=sha256:3f02134e82cfb5d089fddf20bb2e03fd5cd52395321d1c8458a9e58500ff417c \ - --hash=sha256:44969859757f4d8f2a9bd5b76eba8c3099a2c8cf3992ff62144061e39ba8568e \ - --hash=sha256:4c03362e280d06bbbfcd52f29acd79c733e0af33d707c54255d21029b8b32ba6 \ - --hash=sha256:5794944462509e49d4d458f4dbfb92c47539e7d8d15c796f141f474010084056 \ - --hash=sha256:b27f8fdb190c8c03914f908a4555159327d7481dac2f01008d483137ef3311a9 \ - --hash=sha256:c727ca5a9b2dd5193b8644b9f0c883d54f1248310023b5ad3e92036c5e2ada68 \ - --hash=sha256:e469990e28f1ad738f65a42dcfc17adaed9d0f325d55047593cb9033a0ab63df \ - --hash=sha256:ea36cc62e69a13ec52b2f625c27527f6e4479bca2b340b7a452af55b34fcbe2e \ - --hash=sha256:f37f87e4d73b79e6c5e749440c3113b81d1ee7d26f21c19c47371ddea834f414 \ - --hash=sha256:fe361f743cb3389b8efda21980d93eb55c1f1e3898269bc9a2a1d0bb7b1f6508 \ - --hash=sha256:fe8b7f07948f1304497ce4f4684881250cd859b16d06a1dc4d7941eeb6233bfe +psutil==5.9.8 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \ + --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \ + --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \ + --hash=sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2 \ + --hash=sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e \ + --hash=sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36 \ + --hash=sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7 \ + --hash=sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c \ + --hash=sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee \ + --hash=sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421 \ + --hash=sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf \ + --hash=sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81 \ + --hash=sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0 \ + --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \ + --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \ + --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8 psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -561,130 +561,104 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ - --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 +pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ + --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 diff --git a/mula/requirements.txt b/mula/requirements.txt index 0cd23af2a27..0f208159aa3 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==3.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780 \ - --hash=sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5 +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -257,67 +257,67 @@ importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ @@ -470,121 +470,95 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index 09a00161400..0a184a55819 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -402,63 +402,63 @@ files = [ [[package]] name = "coverage" -version = "7.4.0" +version = "7.4.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a"}, - {file = "coverage-7.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516"}, - {file = "coverage-7.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae"}, - {file = "coverage-7.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43"}, - {file = "coverage-7.4.0-cp310-cp310-win32.whl", hash = "sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451"}, - {file = "coverage-7.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca"}, - {file = "coverage-7.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc"}, - {file = "coverage-7.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09"}, - {file = "coverage-7.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26"}, - {file = "coverage-7.4.0-cp311-cp311-win32.whl", hash = "sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614"}, - {file = "coverage-7.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143"}, - {file = "coverage-7.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446"}, - {file = "coverage-7.4.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a"}, - {file = "coverage-7.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa"}, - {file = "coverage-7.4.0-cp312-cp312-win32.whl", hash = "sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450"}, - {file = "coverage-7.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e"}, - {file = "coverage-7.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1"}, - {file = "coverage-7.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e"}, - {file = "coverage-7.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105"}, - {file = "coverage-7.4.0-cp38-cp38-win32.whl", hash = "sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2"}, - {file = "coverage-7.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42"}, - {file = "coverage-7.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed"}, - {file = "coverage-7.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058"}, - {file = "coverage-7.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f"}, - {file = "coverage-7.4.0-cp39-cp39-win32.whl", hash = "sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932"}, - {file = "coverage-7.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e"}, - {file = "coverage-7.4.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6"}, - {file = "coverage-7.4.0.tar.gz", hash = "sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.dependencies] @@ -486,22 +486,23 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "dnspython" -version = "2.4.2" +version = "2.5.0" description = "DNS toolkit" optional = false -python-versions = ">=3.8,<4.0" +python-versions = ">=3.8" files = [ - {file = "dnspython-2.4.2-py3-none-any.whl", hash = "sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8"}, - {file = "dnspython-2.4.2.tar.gz", hash = "sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984"}, + {file = "dnspython-2.5.0-py3-none-any.whl", hash = "sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6"}, + {file = "dnspython-2.5.0.tar.gz", hash = "sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15"}, ] [package.extras] -dnssec = ["cryptography (>=2.6,<42.0)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.1)"] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=5.0.3)", "mypy (>=1.0.1)", "pylint (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0.0)", "sphinx (>=7.0.0)", "twine (>=4.0.0)", "wheel (>=0.41.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.25.1)"] doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.23)"] -wmi = ["wmi (>=1.5.1,<2.0.0)"] +idna = ["idna (>=2.1)"] +trio = ["trio (>=0.14)"] +wmi = ["wmi (>=1.5.1)"] [[package]] name = "exceptiongroup" @@ -719,45 +720,46 @@ files = [ [[package]] name = "httpcore" -version = "0.16.3" +version = "1.0.2" description = "A minimal low-level HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpcore-0.16.3-py3-none-any.whl", hash = "sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0"}, - {file = "httpcore-0.16.3.tar.gz", hash = "sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb"}, + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, ] [package.dependencies] -anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" [package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] [[package]] name = "httpx" -version = "0.23.3" +version = "0.26.0" description = "The next generation HTTP client." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "httpx-0.23.3-py3-none-any.whl", hash = "sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6"}, - {file = "httpx-0.23.3.tar.gz", hash = "sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9"}, + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, ] [package.dependencies] +anyio = "*" certifi = "*" -httpcore = ">=0.15.0,<0.17.0" -rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]} +httpcore = "==1.*" +idna = "*" sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<13)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -820,6 +822,23 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "jinja2" +version = "3.1.3" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + [[package]] name = "jsonpatch" version = "1.33" @@ -847,13 +866,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.21.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.21.0-py3-none-any.whl", hash = "sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c"}, - {file = "jsonschema-4.21.0.tar.gz", hash = "sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -941,6 +960,75 @@ profiling = ["gprof2dot"] rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] +[[package]] +name = "markupsafe" +version = "2.1.4" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, +] + [[package]] name = "mdurl" version = "0.1.2" @@ -1230,13 +1318,13 @@ files = [ [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -1279,18 +1367,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -1298,116 +1386,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -1459,13 +1521,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.4.4" +version = "8.0.0" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, - {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, + {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, + {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, ] [package.dependencies] @@ -1473,7 +1535,7 @@ colorama = {version = "*", markers = "sys_platform == \"win32\""} exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" -pluggy = ">=0.12,<2.0" +pluggy = ">=1.3.0,<2.0" tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] @@ -1499,20 +1561,21 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pytest-env" -version = "0.8.2" -description = "py.test plugin that allows you to add environment variables." +version = "1.1.3" +description = "pytest plugin that allows you to add environment variables." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest_env-0.8.2-py3-none-any.whl", hash = "sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38"}, - {file = "pytest_env-0.8.2.tar.gz", hash = "sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff"}, + {file = "pytest_env-1.1.3-py3-none-any.whl", hash = "sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc"}, + {file = "pytest_env-1.1.3.tar.gz", hash = "sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b"}, ] [package.dependencies] -pytest = ">=7.3.1" +pytest = ">=7.4.3" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -test = ["coverage (>=7.2.7)", "pytest-mock (>=3.10)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "pytest-mock (>=3.12)"] [[package]] name = "pytest-mock" @@ -1561,13 +1624,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1634,13 +1697,13 @@ files = [ [[package]] name = "referencing" -version = "0.32.1" +version = "0.33.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.32.1-py3-none-any.whl", hash = "sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554"}, - {file = "referencing-0.32.1.tar.gz", hash = "sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -1670,18 +1733,16 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-file" -version = "1.5.1" +version = "2.0.0" description = "File transport adapter for Requests" optional = false python-versions = "*" files = [ - {file = "requests-file-1.5.1.tar.gz", hash = "sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e"}, - {file = "requests_file-1.5.1-py2.py3-none-any.whl", hash = "sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953"}, + {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, ] [package.dependencies] requests = ">=1.0.0" -six = "*" [[package]] name = "requests-mock" @@ -1702,23 +1763,6 @@ six = "*" fixture = ["fixtures"] test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "testtools"] -[[package]] -name = "rfc3986" -version = "1.5.0" -description = "Validating URI References per RFC 3986" -optional = false -python-versions = "*" -files = [ - {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"}, - {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"}, -] - -[package.dependencies] -idna = {version = "*", optional = true, markers = "extra == \"idna2008\""} - -[package.extras] -idna2008 = ["idna"] - [[package]] name = "rich" version = "13.7.0" @@ -1759,13 +1803,13 @@ typer = ["typer (>=0.4)"] [[package]] name = "robotframework" -version = "6.1.1" +version = "7.0" description = "Generic automation framework for acceptance testing and robotic process automation (RPA)" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "robotframework-6.1.1-py3-none-any.whl", hash = "sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7"}, - {file = "robotframework-6.1.1.zip", hash = "sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789"}, + {file = "robotframework-7.0-py3-none-any.whl", hash = "sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41"}, + {file = "robotframework-7.0.zip", hash = "sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5"}, ] [[package]] @@ -1804,26 +1848,28 @@ test = ["coverage", "flake8", "flask", "pytest", "robotframework (>=3.2.1)", "si [[package]] name = "robotframework-tidy" -version = "3.5.0" +version = "4.8.1" description = "Code autoformatter for Robot Framework" optional = false python-versions = ">=3.7" files = [ - {file = "robotframework-tidy-3.5.0.tar.gz", hash = "sha256:8748c80fa2c22b455dfcf7f7ee724d019f52d2d17ba66f38f0167aecd0c217e6"}, - {file = "robotframework_tidy-3.5.0-py3-none-any.whl", hash = "sha256:7db2699d01b8c08ba638d54c3a2e167e5b61c5d9c9cde3d549c23c16709ade5b"}, + {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, + {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, ] [package.dependencies] -click = ">=8.1.3" -colorama = ">=0.4.3" -pathspec = ">=0.9.0,<0.12.0" -rich-click = "1.4" +click = "==8.1.*" +colorama = ">=0.4.3,<0.4.7" +jinja2 = ">=3.1.3,<4.0" +pathspec = ">=0.9.0,<0.12.2" +rich-click = ">=1.4,<1.7.4" robotframework = ">=4.0" -tomli = ">=2.0.0" +tomli = "==2.0.*" [package.extras] -dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (==2.4.*)", "pylama", "pytest"] -doc = ["furo", "sphinx", "sphinx-copybutton (==0.3.3)", "sphinx-design"] +dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (>=2.4,<3.3)", "pylama", "pytest", "tomli-w (==1.0.*)"] +doc = ["furo", "sphinx", "sphinx-copybutton (==0.5.2)", "sphinx-design"] +generate-config = ["tomli-w (==1.0.*)"] [[package]] name = "rpds-py" @@ -2328,4 +2374,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "13e4d56c2e84b47af94b2a9dae1efe5458df883302c3ff59248aa59f51939469" +content-hash = "1c8e6e70c5b4015745ad6dd53b4b72039f9dd11ad97867be98cbd96e59678568" diff --git a/octopoes/pyproject.toml b/octopoes/pyproject.toml index 92bfb833677..69ded0c49d6 100644 --- a/octopoes/pyproject.toml +++ b/octopoes/pyproject.toml @@ -37,15 +37,15 @@ pydantic-settings = "^2.0.3" [tool.poetry.group.dev.dependencies] requests-mock = "^1.10.0" -robotframework = "^6.0" +robotframework = "^7.0" robotframework-requests = "^0.9.3" -robotframework-tidy = "^3.3.1" +robotframework-tidy = "^4.8.1" robotframework-httplibrary = "^0.4.2" -pytest = "^7.2.0" +pytest = "^8.0.0" pytest-cov = "^4.0.0" pytest-mock = "^3.10.0" -pytest-env = "^0.8.2" -httpx = "^0.23.3" +pytest-env = "^1.1.3" +httpx = "^0.26.0" pytest-timeout = "^2.1.0" [tool.black] diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index becd4793c66..befab65a2b5 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -168,65 +168,65 @@ click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04387a4a6ecb330c1878907ce0dc04078ea72a869263e53c72a1ba5bbdf380ca \ - --hash=sha256:0676cd0ba581e514b7f726495ea75aba3eb20899d824636c6f59b0ed2f88c471 \ - --hash=sha256:0e8d06778e8fbffccfe96331a3946237f87b1e1d359d7fbe8b06b96c95a5407a \ - --hash=sha256:0eb3c2f32dabe3a4aaf6441dde94f35687224dfd7eb2a7f47f3fd9428e421058 \ - --hash=sha256:109f5985182b6b81fe33323ab4707011875198c41964f014579cf82cebf2bb85 \ - --hash=sha256:13eaf476ec3e883fe3e5fe3707caeb88268a06284484a3daf8250259ef1ba143 \ - --hash=sha256:164fdcc3246c69a6526a59b744b62e303039a81e42cfbbdc171c91a8cc2f9446 \ - --hash=sha256:26776ff6c711d9d835557ee453082025d871e30b3fd6c27fcef14733f67f0590 \ - --hash=sha256:26f66da8695719ccf90e794ed567a1549bb2644a706b41e9f6eae6816b398c4a \ - --hash=sha256:29f3abe810930311c0b5d1a7140f6395369c3db1be68345638c33eec07535105 \ - --hash=sha256:316543f71025a6565677d84bc4df2114e9b6a615aa39fb165d697dba06a54af9 \ - --hash=sha256:36b0ea8ab20d6a7564e89cb6135920bc9188fb5f1f7152e94e8300b7b189441a \ - --hash=sha256:3cc9d4bc55de8003663ec94c2f215d12d42ceea128da8f0f4036235a119c88ac \ - --hash=sha256:485e9f897cf4856a65a57c7f6ea3dc0d4e6c076c87311d4bc003f82cfe199d25 \ - --hash=sha256:5040148f4ec43644702e7b16ca864c5314ccb8ee0751ef617d49aa0e2d6bf4f2 \ - --hash=sha256:51456e6fa099a8d9d91497202d9563a320513fcf59f33991b0661a4a6f2ad450 \ - --hash=sha256:53d7d9158ee03956e0eadac38dfa1ec8068431ef8058fe6447043db1fb40d932 \ - --hash=sha256:5a10a4920def78bbfff4eff8a05c51be03e42f1c3735be42d851f199144897ba \ - --hash=sha256:5b14b4f8760006bfdb6e08667af7bc2d8d9bfdb648351915315ea17645347137 \ - --hash=sha256:5b2ccb7548a0b65974860a78c9ffe1173cfb5877460e5a229238d985565574ae \ - --hash=sha256:697d1317e5290a313ef0d369650cfee1a114abb6021fa239ca12b4849ebbd614 \ - --hash=sha256:6ae8c9d301207e6856865867d762a4b6fd379c714fcc0607a84b92ee63feff70 \ - --hash=sha256:707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e \ - --hash=sha256:74775198b702868ec2d058cb92720a3c5a9177296f75bd97317c787daf711505 \ - --hash=sha256:756ded44f47f330666843b5781be126ab57bb57c22adbb07d83f6b519783b870 \ - --hash=sha256:76f03940f9973bfaee8cfba70ac991825611b9aac047e5c80d499a44079ec0bc \ - --hash=sha256:79287fd95585ed36e83182794a57a46aeae0b64ca53929d1176db56aacc83451 \ - --hash=sha256:799c8f873794a08cdf216aa5d0531c6a3747793b70c53f70e98259720a6fe2d7 \ - --hash=sha256:7d360587e64d006402b7116623cebf9d48893329ef035278969fa3bbf75b697e \ - --hash=sha256:80b5ee39b7f0131ebec7968baa9b2309eddb35b8403d1869e08f024efd883566 \ - --hash=sha256:815ac2d0f3398a14286dc2cea223a6f338109f9ecf39a71160cd1628786bc6f5 \ - --hash=sha256:83c2dda2666fe32332f8e87481eed056c8b4d163fe18ecc690b02802d36a4d26 \ - --hash=sha256:846f52f46e212affb5bcf131c952fb4075b55aae6b61adc9856222df89cbe3e2 \ - --hash=sha256:936d38794044b26c99d3dd004d8af0035ac535b92090f7f2bb5aa9c8e2f5cd42 \ - --hash=sha256:9864463c1c2f9cb3b5db2cf1ff475eed2f0b4285c2aaf4d357b69959941aa555 \ - --hash=sha256:995ea5c48c4ebfd898eacb098164b3cc826ba273b3049e4a889658548e321b43 \ - --hash=sha256:a1526d265743fb49363974b7aa8d5899ff64ee07df47dd8d3e37dcc0818f09ed \ - --hash=sha256:a56de34db7b7ff77056a37aedded01b2b98b508227d2d0979d373a9b5d353daa \ - --hash=sha256:a7c97726520f784239f6c62506bc70e48d01ae71e9da128259d61ca5e9788516 \ - --hash=sha256:b8e99f06160602bc64da35158bb76c73522a4010f0649be44a4e167ff8555952 \ - --hash=sha256:bb1de682da0b824411e00a0d4da5a784ec6496b6850fdf8c865c1d68c0e318dd \ - --hash=sha256:bf477c355274a72435ceb140dc42de0dc1e1e0bf6e97195be30487d8eaaf1a09 \ - --hash=sha256:bf635a52fc1ea401baf88843ae8708591aa4adff875e5c23220de43b1ccf575c \ - --hash=sha256:bfd5db349d15c08311702611f3dccbef4b4e2ec148fcc636cf8739519b4a5c0f \ - --hash=sha256:c530833afc4707fe48524a44844493f36d8727f04dcce91fb978c414a8556cc6 \ - --hash=sha256:cc6d65b21c219ec2072c1293c505cf36e4e913a3f936d80028993dd73c7906b1 \ - --hash=sha256:cd3c1e4cb2ff0083758f09be0f77402e1bdf704adb7f89108007300a6da587d0 \ - --hash=sha256:cfd2a8b6b0d8e66e944d47cdec2f47c48fef2ba2f2dff5a9a75757f64172857e \ - --hash=sha256:d0ca5c71a5a1765a0f8f88022c52b6b8be740e512980362f7fdbb03725a0d6b9 \ - --hash=sha256:e7defbb9737274023e2d7af02cac77043c86ce88a907c58f42b580a97d5bcca9 \ - --hash=sha256:e9d1bf53c4c8de58d22e0e956a79a5b37f754ed1ffdbf1a260d9dcfa2d8a325e \ - --hash=sha256:ea81d8f9691bb53f4fb4db603203029643caffc82bf998ab5b59ca05560f4c06 +coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ + --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ + --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ + --hash=sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7 \ + --hash=sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75 \ + --hash=sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd \ + --hash=sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35 \ + --hash=sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04 \ + --hash=sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6 \ + --hash=sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042 \ + --hash=sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166 \ + --hash=sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1 \ + --hash=sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d \ + --hash=sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c \ + --hash=sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66 \ + --hash=sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70 \ + --hash=sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1 \ + --hash=sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676 \ + --hash=sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630 \ + --hash=sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a \ + --hash=sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74 \ + --hash=sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad \ + --hash=sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19 \ + --hash=sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6 \ + --hash=sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448 \ + --hash=sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018 \ + --hash=sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218 \ + --hash=sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756 \ + --hash=sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54 \ + --hash=sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45 \ + --hash=sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628 \ + --hash=sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968 \ + --hash=sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d \ + --hash=sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25 \ + --hash=sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60 \ + --hash=sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950 \ + --hash=sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06 \ + --hash=sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295 \ + --hash=sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b \ + --hash=sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c \ + --hash=sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc \ + --hash=sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74 \ + --hash=sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1 \ + --hash=sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee \ + --hash=sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011 \ + --hash=sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156 \ + --hash=sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766 \ + --hash=sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5 \ + --hash=sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581 \ + --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ + --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ + --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8 \ - --hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984 +dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ + --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 @@ -356,12 +356,12 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==0.16.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c5d6f04e2fc530f39e0c077e6a30caa53f1451096120f1f38b954afd0b17c0cb \ - --hash=sha256:da1fb708784a938aa084bde4feb8317056c55037247c787bd7e19eb2c2949dc0 -httpx==0.23.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:9818458eb565bb54898ccb9b8b251a28785dd4a55afbc23d0eb410754fe7d0f9 \ - --hash=sha256:a211fcce9b1254ea24f0cd6af9869b3d29aba40154e947d2a07bb499b3e310d6 +httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ + --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ + --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -374,6 +374,9 @@ importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 +jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ + --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 jsonpatch==1.33 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c @@ -383,15 +386,76 @@ jsonpointer==2.4 ; python_version >= "3.8" and python_version < "4.0" \ jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 kombu==5.3.5 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488 \ --hash=sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93 markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -446,9 +510,9 @@ pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 @@ -464,118 +528,92 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 @@ -585,24 +623,24 @@ pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest-env==0.8.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:5e533273f4d9e6a41c3a3120e0c7944aae5674fa773b329f00a5eb1f23c53a38 \ - --hash=sha256:baed9b3b6bae77bd75b9238e0ed1ee6903a42806ae9d6aeffb8754cd5584d4ff +pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ + --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b pytest-mock==3.12.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f \ --hash=sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9 pytest-timeout==2.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90 \ --hash=sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2 -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ - --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 +pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ + --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -654,21 +692,17 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -referencing==0.32.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 -requests-file==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e \ - --hash=sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953 +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 +requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests-mock==1.11.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4 \ --hash=sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15 requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3986[idna2008]==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835 \ - --hash=sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97 rich-click==1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 @@ -680,12 +714,12 @@ robotframework-httplibrary==0.4.2 ; python_version >= "3.8" and python_version < robotframework-requests==0.9.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:7db2699d01b8c08ba638d54c3a2e167e5b61c5d9c9cde3d549c23c16709ade5b \ - --hash=sha256:8748c80fa2c22b455dfcf7f7ee724d019f52d2d17ba66f38f0167aecd0c217e6 -robotframework==6.1.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789 \ - --hash=sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7 +robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ + --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 +robotframework==7.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ + --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index cf9b76ea410..0f43cf8f0ed 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -168,9 +168,9 @@ colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platfor deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8 \ - --hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984 +dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ + --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 @@ -312,9 +312,9 @@ importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ba18e27f7491ea4a1b22edce00fb820eec968d397feb3f9cb61d5894bb38167 \ - --hash=sha256:70a09719d375c0a2874571b363c8a24be7df8071b80c9aa76bc4551e7297c63c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 kombu==5.3.5 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488 \ --hash=sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93 @@ -381,127 +381,101 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -553,12 +527,11 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -referencing==0.32.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3c57da0513e9563eb7e203ebe9bb3a1b509b042016433bd1e45a2853466c3dd3 \ - --hash=sha256:7e4dc12271d8e15612bfe35792f5ea1c40970dadf8624602e33db2758f7ee554 -requests-file==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07d74208d3389d01c38ab89ef403af0cfec63957d53a0081d8eca738d0247d8e \ - --hash=sha256:dfe5dae75c12481f68ba353183c53a65e6044c923e64c24b2209f6c7570ca953 +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 +requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 diff --git a/poetry.lock b/poetry.lock index 1a1933f873d..c8ebadceddb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -272,71 +272,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -408,18 +408,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.3" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.3-py3-none-any.whl", hash = "sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4"}, - {file = "pydantic-2.5.3.tar.gz", hash = "sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.6" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -427,116 +427,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.6" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9"}, - {file = "pydantic_core-2.14.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245"}, - {file = "pydantic_core-2.14.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66"}, - {file = "pydantic_core-2.14.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590"}, - {file = "pydantic_core-2.14.6-cp310-none-win32.whl", hash = "sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7"}, - {file = "pydantic_core-2.14.6-cp310-none-win_amd64.whl", hash = "sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4"}, - {file = "pydantic_core-2.14.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1"}, - {file = "pydantic_core-2.14.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622"}, - {file = "pydantic_core-2.14.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2"}, - {file = "pydantic_core-2.14.6-cp311-none-win32.whl", hash = "sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2"}, - {file = "pydantic_core-2.14.6-cp311-none-win_amd64.whl", hash = "sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23"}, - {file = "pydantic_core-2.14.6-cp311-none-win_arm64.whl", hash = "sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec"}, - {file = "pydantic_core-2.14.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b"}, - {file = "pydantic_core-2.14.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91"}, - {file = "pydantic_core-2.14.6-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c"}, - {file = "pydantic_core-2.14.6-cp312-none-win32.whl", hash = "sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786"}, - {file = "pydantic_core-2.14.6-cp312-none-win_amd64.whl", hash = "sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40"}, - {file = "pydantic_core-2.14.6-cp312-none-win_arm64.whl", hash = "sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8"}, - {file = "pydantic_core-2.14.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e"}, - {file = "pydantic_core-2.14.6-cp37-none-win32.whl", hash = "sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6"}, - {file = "pydantic_core-2.14.6-cp37-none-win_amd64.whl", hash = "sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149"}, - {file = "pydantic_core-2.14.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80"}, - {file = "pydantic_core-2.14.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1"}, - {file = "pydantic_core-2.14.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60"}, - {file = "pydantic_core-2.14.6-cp38-none-win32.whl", hash = "sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe"}, - {file = "pydantic_core-2.14.6-cp38-none-win_amd64.whl", hash = "sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab"}, - {file = "pydantic_core-2.14.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9"}, - {file = "pydantic_core-2.14.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411"}, - {file = "pydantic_core-2.14.6-cp39-none-win32.whl", hash = "sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975"}, - {file = "pydantic_core-2.14.6-cp39-none-win_amd64.whl", hash = "sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94"}, - {file = "pydantic_core-2.14.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f"}, - {file = "pydantic_core-2.14.6-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4"}, - {file = "pydantic_core-2.14.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341"}, - {file = "pydantic_core-2.14.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e"}, - {file = "pydantic_core-2.14.6.tar.gz", hash = "sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -574,13 +548,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -588,13 +562,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2023.3.post1" +version = "2023.4" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, - {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, ] [[package]] diff --git a/requirements.txt b/requirements.txt index 52b255bd5d0..cf313e99b65 100644 --- a/requirements.txt +++ b/requirements.txt @@ -125,67 +125,67 @@ jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mdit-py-plugins==0.4.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9 \ --hash=sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b @@ -198,127 +198,101 @@ myst-parser==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pydantic-core==2.14.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00646784f6cd993b1e1c0e7b0fdcbccc375d539db95555477771c27555e3c556 \ - --hash=sha256:00b1087dabcee0b0ffd104f9f53d7d3eaddfaa314cdd6726143af6bc713aa27e \ - --hash=sha256:0348b1dc6b76041516e8a854ff95b21c55f5a411c3297d2ca52f5528e49d8411 \ - --hash=sha256:036137b5ad0cb0004c75b579445a1efccd072387a36c7f217bb8efd1afbe5245 \ - --hash=sha256:095b707bb287bfd534044166ab767bec70a9bba3175dcdc3371782175c14e43c \ - --hash=sha256:0c08de15d50fa190d577e8591f0329a643eeaed696d7771760295998aca6bc66 \ - --hash=sha256:1302a54f87b5cd8528e4d6d1bf2133b6aa7c6122ff8e9dc5220fbc1e07bffebd \ - --hash=sha256:172de779e2a153d36ee690dbc49c6db568d7b33b18dc56b69a7514aecbcf380d \ - --hash=sha256:1b027c86c66b8627eb90e57aee1f526df77dc6d8b354ec498be9a757d513b92b \ - --hash=sha256:1ce830e480f6774608dedfd4a90c42aac4a7af0a711f1b52f807130c2e434c06 \ - --hash=sha256:1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948 \ - --hash=sha256:23598acb8ccaa3d1d875ef3b35cb6376535095e9405d91a3d57a8c7db5d29341 \ - --hash=sha256:24368e31be2c88bd69340fbfe741b405302993242ccb476c5c3ff48aeee1afe0 \ - --hash=sha256:26a92ae76f75d1915806b77cf459811e772d8f71fd1e4339c99750f0e7f6324f \ - --hash=sha256:27e524624eace5c59af499cd97dc18bb201dc6a7a2da24bfc66ef151c69a5f2a \ - --hash=sha256:2b8719037e570639e6b665a4050add43134d80b687288ba3ade18b22bbb29dd2 \ - --hash=sha256:2c5bcf3414367e29f83fd66f7de64509a8fd2368b1edf4351e862910727d3e51 \ - --hash=sha256:2dbe357bc4ddda078f79d2a36fc1dd0494a7f2fad83a0a684465b6f24b46fe80 \ - --hash=sha256:2f5fa187bde8524b1e37ba894db13aadd64faa884657473b03a019f625cee9a8 \ - --hash=sha256:2f6ffc6701a0eb28648c845f4945a194dc7ab3c651f535b81793251e1185ac3d \ - --hash=sha256:314ccc4264ce7d854941231cf71b592e30d8d368a71e50197c905874feacc8a8 \ - --hash=sha256:36026d8f99c58d7044413e1b819a67ca0e0b8ebe0f25e775e6c3d1fabb3c38fb \ - --hash=sha256:36099c69f6b14fc2c49d7996cbf4f87ec4f0e66d1c74aa05228583225a07b590 \ - --hash=sha256:36fa402dcdc8ea7f1b0ddcf0df4254cc6b2e08f8cd80e7010d4c4ae6e86b2a87 \ - --hash=sha256:370ffecb5316ed23b667d99ce4debe53ea664b99cc37bfa2af47bc769056d534 \ - --hash=sha256:3860c62057acd95cc84044e758e47b18dcd8871a328ebc8ccdefd18b0d26a21b \ - --hash=sha256:399ac0891c284fa8eb998bcfa323f2234858f5d2efca3950ae58c8f88830f145 \ - --hash=sha256:3a0b5db001b98e1c649dd55afa928e75aa4087e587b9524a4992316fa23c9fba \ - --hash=sha256:3dcf1978be02153c6a31692d4fbcc2a3f1db9da36039ead23173bc256ee3b91b \ - --hash=sha256:4241204e4b36ab5ae466ecec5c4c16527a054c69f99bba20f6f75232a6a534e2 \ - --hash=sha256:438027a975cc213a47c5d70672e0d29776082155cfae540c4e225716586be75e \ - --hash=sha256:43e166ad47ba900f2542a80d83f9fc65fe99eb63ceec4debec160ae729824052 \ - --hash=sha256:478e9e7b360dfec451daafe286998d4a1eeaecf6d69c427b834ae771cad4b622 \ - --hash=sha256:4ce8299b481bcb68e5c82002b96e411796b844d72b3e92a3fbedfe8e19813eab \ - --hash=sha256:4f86f1f318e56f5cbb282fe61eb84767aee743ebe32c7c0834690ebea50c0a6b \ - --hash=sha256:55a23dcd98c858c0db44fc5c04fc7ed81c4b4d33c653a7c45ddaebf6563a2f66 \ - --hash=sha256:599c87d79cab2a6a2a9df4aefe0455e61e7d2aeede2f8577c1b7c0aec643ee8e \ - --hash=sha256:5aa90562bc079c6c290f0512b21768967f9968e4cfea84ea4ff5af5d917016e4 \ - --hash=sha256:64634ccf9d671c6be242a664a33c4acf12882670b09b3f163cd00a24cffbd74e \ - --hash=sha256:667aa2eac9cd0700af1ddb38b7b1ef246d8cf94c85637cbb03d7757ca4c3fdec \ - --hash=sha256:6a31d98c0d69776c2576dda4b77b8e0c69ad08e8b539c25c7d0ca0dc19a50d6c \ - --hash=sha256:6af4b3f52cc65f8a0bc8b1cd9676f8c21ef3e9132f21fed250f6958bd7223bed \ - --hash=sha256:6c8edaea3089bf908dd27da8f5d9e395c5b4dc092dbcce9b65e7156099b4b937 \ - --hash=sha256:71d72ca5eaaa8d38c8df16b7deb1a2da4f650c41b58bb142f3fb75d5ad4a611f \ - --hash=sha256:72f9a942d739f09cd42fffe5dc759928217649f070056f03c70df14f5770acf9 \ - --hash=sha256:747265448cb57a9f37572a488a57d873fd96bf51e5bb7edb52cfb37124516da4 \ - --hash=sha256:75ec284328b60a4e91010c1acade0c30584f28a1f345bc8f72fe8b9e46ec6a96 \ - --hash=sha256:78d0768ee59baa3de0f4adac9e3748b4b1fffc52143caebddfd5ea2961595277 \ - --hash=sha256:78ee52ecc088c61cce32b2d30a826f929e1708f7b9247dc3b921aec367dc1b23 \ - --hash=sha256:7be719e4d2ae6c314f72844ba9d69e38dff342bc360379f7c8537c48e23034b7 \ - --hash=sha256:7e1f4744eea1501404b20b0ac059ff7e3f96a97d3e3f48ce27a139e053bb370b \ - --hash=sha256:7e90d6cc4aad2cc1f5e16ed56e46cebf4877c62403a311af20459c15da76fd91 \ - --hash=sha256:7ebe3416785f65c28f4f9441e916bfc8a54179c8dea73c23023f7086fa601c5d \ - --hash=sha256:7f41533d7e3cf9520065f610b41ac1c76bc2161415955fbcead4981b22c7611e \ - --hash=sha256:7f5025db12fc6de7bc1104d826d5aee1d172f9ba6ca936bf6474c2148ac336c1 \ - --hash=sha256:86c963186ca5e50d5c8287b1d1c9d3f8f024cbe343d048c5bd282aec2d8641f2 \ - --hash=sha256:86ce5fcfc3accf3a07a729779d0b86c5d0309a4764c897d86c11089be61da160 \ - --hash=sha256:8a14c192c1d724c3acbfb3f10a958c55a2638391319ce8078cb36c02283959b9 \ - --hash=sha256:8b93785eadaef932e4fe9c6e12ba67beb1b3f1e5495631419c784ab87e975670 \ - --hash=sha256:8ed1af8692bd8d2a29d702f1a2e6065416d76897d726e45a1775b1444f5928a7 \ - --hash=sha256:92879bce89f91f4b2416eba4429c7b5ca22c45ef4a499c39f0c5c69257522c7c \ - --hash=sha256:94fc0e6621e07d1e91c44e016cc0b189b48db053061cc22d6298a611de8071bb \ - --hash=sha256:982487f8931067a32e72d40ab6b47b1628a9c5d344be7f1a4e668fb462d2da42 \ - --hash=sha256:9862bf828112e19685b76ca499b379338fd4c5c269d897e218b2ae8fcb80139d \ - --hash=sha256:99b14dbea2fdb563d8b5a57c9badfcd72083f6006caf8e126b491519c7d64ca8 \ - --hash=sha256:9c6a5c79b28003543db3ba67d1df336f253a87d3112dac3a51b94f7d48e4c0e1 \ - --hash=sha256:a19b794f8fe6569472ff77602437ec4430f9b2b9ec7a1105cfd2232f9ba355e6 \ - --hash=sha256:a306cdd2ad3a7d795d8e617a58c3a2ed0f76c8496fb7621b6cd514eb1532cae8 \ - --hash=sha256:a3dde6cac75e0b0902778978d3b1646ca9f438654395a362cb21d9ad34b24acf \ - --hash=sha256:a874f21f87c485310944b2b2734cd6d318765bcbb7515eead33af9641816506e \ - --hash=sha256:a983cca5ed1dd9a35e9e42ebf9f278d344603bfcb174ff99a5815f953925140a \ - --hash=sha256:aca48506a9c20f68ee61c87f2008f81f8ee99f8d7f0104bff3c47e2d148f89d9 \ - --hash=sha256:b2602177668f89b38b9f84b7b3435d0a72511ddef45dc14446811759b82235a1 \ - --hash=sha256:b3e5fe4538001bb82e2295b8d2a39356a84694c97cb73a566dc36328b9f83b40 \ - --hash=sha256:b6ca36c12a5120bad343eef193cc0122928c5c7466121da7c20f41160ba00ba2 \ - --hash=sha256:b89f4477d915ea43b4ceea6756f63f0288941b6443a2b28c69004fe07fde0d0d \ - --hash=sha256:b9a9d92f10772d2a181b5ca339dee066ab7d1c9a34ae2421b2a52556e719756f \ - --hash=sha256:c99462ffc538717b3e60151dfaf91125f637e801f5ab008f81c402f1dff0cd0f \ - --hash=sha256:cb92f9061657287eded380d7dc455bbf115430b3aa4741bdc662d02977e7d0af \ - --hash=sha256:cdee837710ef6b56ebd20245b83799fce40b265b3b406e51e8ccc5b85b9099b7 \ - --hash=sha256:cf10b7d58ae4a1f07fccbf4a0a956d705356fea05fb4c70608bb6fa81d103cda \ - --hash=sha256:d15687d7d7f40333bd8266f3814c591c2e2cd263fa2116e314f60d82086e353a \ - --hash=sha256:d5c28525c19f5bb1e09511669bb57353d22b94cf8b65f3a8d141c389a55dec95 \ - --hash=sha256:d5f916acf8afbcab6bacbb376ba7dc61f845367901ecd5e328fc4d4aef2fcab0 \ - --hash=sha256:dab03ed811ed1c71d700ed08bde8431cf429bbe59e423394f0f4055f1ca0ea60 \ - --hash=sha256:db453f2da3f59a348f514cfbfeb042393b68720787bbef2b4c6068ea362c8149 \ - --hash=sha256:de2a0645a923ba57c5527497daf8ec5df69c6eadf869e9cd46e86349146e5975 \ - --hash=sha256:dea7fcd62915fb150cdc373212141a30037e11b761fbced340e9db3379b892d4 \ - --hash=sha256:dfcbebdb3c4b6f739a91769aea5ed615023f3c88cb70df812849aef634c25fbe \ - --hash=sha256:dfcebb950aa7e667ec226a442722134539e77c575f6cfaa423f24371bb8d2e94 \ - --hash=sha256:e0641b506486f0b4cd1500a2a65740243e8670a2549bb02bc4556a83af84ae03 \ - --hash=sha256:e33b0834f1cf779aa839975f9d8755a7c2420510c0fa1e9fa0497de77cd35d2c \ - --hash=sha256:e4ace1e220b078c8e48e82c081e35002038657e4b37d403ce940fa679e57113b \ - --hash=sha256:e4cf2d5829f6963a5483ec01578ee76d329eb5caf330ecd05b3edd697e7d768a \ - --hash=sha256:e574de99d735b3fc8364cba9912c2bec2da78775eba95cbb225ef7dda6acea24 \ - --hash=sha256:e646c0e282e960345314f42f2cea5e0b5f56938c093541ea6dbf11aec2862391 \ - --hash=sha256:e8a5ac97ea521d7bde7621d86c30e86b798cdecd985723c4ed737a2aa9e77d0c \ - --hash=sha256:eedf97be7bc3dbc8addcef4142f4b4164066df0c6f36397ae4aaed3eb187d8ab \ - --hash=sha256:ef633add81832f4b56d3b4c9408b43d530dfca29e68fb1b797dcb861a2c734cd \ - --hash=sha256:f27207e8ca3e5e021e2402ba942e5b4c629718e665c81b8b306f3c8b1ddbb786 \ - --hash=sha256:f85f3843bdb1fe80e8c206fe6eed7a1caeae897e496542cee499c374a85c6e08 \ - --hash=sha256:f8e81e4b55930e5ffab4a68db1af431629cf2e4066dbdbfef65348b8ab804ea8 \ - --hash=sha256:f96ae96a060a8072ceff4cfde89d261837b4294a4f28b84a28765470d502ccc6 \ - --hash=sha256:fd9e98b408384989ea4ab60206b8e100d8687da18b5c813c11e92fd8212a98e0 \ - --hash=sha256:ffff855100bc066ff2cd3aa4a60bc9534661816b110f0243e59503ec2df38421 +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.5.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:b3ef57c62535b0941697cce638c08900d87fcb67e29cfa99e8a68f747f393f7a \ - --hash=sha256:d0caf5954bee831b6bfe7e338c32b9e30c85dfe080c843680783ac2b631673b4 +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pytz==2023.3.post1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b \ - --hash=sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7 +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a +pytz==2023.4 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ diff --git a/rocky/poetry.lock b/rocky/poetry.lock index 91885815e68..f68033d7c0d 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -16,24 +16,25 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} [[package]] name = "anyio" -version = "4.0.0" +version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, - {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.22)"] +doc = ["Sphinx (>=7)", "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.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "arabic-reshaper" @@ -89,21 +90,22 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "backoff" @@ -157,19 +159,22 @@ tzdata = ["tzdata"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] @@ -306,86 +311,74 @@ cffi = ">=1.0.0" [[package]] name = "certifi" -version = "2023.7.22" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -404,86 +397,101 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] @@ -513,63 +521,63 @@ files = [ [[package]] name = "coverage" -version = "7.3.0" +version = "7.4.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, - {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, - {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, - {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, - {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, - {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, - {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, - {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, - {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, - {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, - {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, - {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, - {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, - {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, + {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, + {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, + {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, + {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, + {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, + {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, + {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, + {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, + {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, + {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, + {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, + {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, + {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, + {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, + {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, + {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, + {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, + {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, + {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, + {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, + {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, + {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, + {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, + {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, + {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, + {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, + {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, ] [package.dependencies] @@ -580,57 +588,66 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "41.0.6" +version = "42.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.6-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c"}, - {file = "cryptography-41.0.6-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae"}, - {file = "cryptography-41.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d"}, - {file = "cryptography-41.0.6-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c"}, - {file = "cryptography-41.0.6-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596"}, - {file = "cryptography-41.0.6-cp37-abi3-win32.whl", hash = "sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660"}, - {file = "cryptography-41.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da"}, - {file = "cryptography-41.0.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09"}, - {file = "cryptography-41.0.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43"}, - {file = "cryptography-41.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4"}, - {file = "cryptography-41.0.6.tar.gz", hash = "sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, + {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, + {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, + {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, + {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, + {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, + {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, + {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, + {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, + {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, + {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, + {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, + {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, + {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, ] [package.dependencies] -cffi = ">=1.12" +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "cssbeautifier" -version = "1.14.9" +version = "1.14.11" description = "CSS unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "cssbeautifier-1.14.9.tar.gz", hash = "sha256:2da432472f68170eb854aff97b16a24721f5090ee36af2e31199590a89e7f71f"}, + {file = "cssbeautifier-1.14.11.tar.gz", hash = "sha256:40544c2b62bbcb64caa5e7f37a02df95654e5ce1bcacadac4ca1f3dc89c31513"}, ] [package.dependencies] @@ -690,13 +707,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "django" -version = "4.2.7" +version = "4.2.9" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.7-py3-none-any.whl", hash = "sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9"}, - {file = "Django-4.2.7.tar.gz", hash = "sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41"}, + {file = "Django-4.2.9-py3-none-any.whl", hash = "sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984"}, + {file = "Django-4.2.9.tar.gz", hash = "sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14"}, ] [package.dependencies] @@ -726,20 +743,20 @@ resolved_reference = "f6eb4cbb9112b5aa933313d79e4da823adb41e1e" [[package]] name = "django-appconf" -version = "1.0.5" +version = "1.0.6" description = "A helper class for handling configuration defaults of packaged apps gracefully." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "django-appconf-1.0.5.tar.gz", hash = "sha256:be3db0be6c81fa84742000b89a81c016d70ae66a7ccb620cdef592b1f1a6aaa4"}, - {file = "django_appconf-1.0.5-py3-none-any.whl", hash = "sha256:ae9f864ee1958c815a965ed63b3fba4874eec13de10236ba063a788f9a17389d"}, + {file = "django-appconf-1.0.6.tar.gz", hash = "sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf"}, + {file = "django_appconf-1.0.6-py3-none-any.whl", hash = "sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993"}, ] [package.dependencies] django = "*" [[package]] -name = "django-compressor" +name = "django_compressor" version = "4.4" description = "('Compresses linked and inline JavaScript or CSS into single cached files.',)" optional = false @@ -778,13 +795,13 @@ tests = ["jinja2 (>=2.9.6)", "mock (==1.0.1)", "pep8 (==1.4.6)", "pytest (<4.0)" [[package]] name = "django-environ" -version = "0.10.0" +version = "0.11.2" description = "A package that allows you to utilize 12factor inspired environment variables to configure your Django application." optional = false -python-versions = ">=3.5,<4" +python-versions = ">=3.6,<4" files = [ - {file = "django-environ-0.10.0.tar.gz", hash = "sha256:b3559a91439c9d774a9e0c1ced872364772c612cdf6dc919506a2b13f7a77225"}, - {file = "django_environ-0.10.0-py2.py3-none-any.whl", hash = "sha256:510f8c9c1d0a38b0815f91504270c29440a0cf44fab07f55942fa8d31bbb9be6"}, + {file = "django-environ-0.11.2.tar.gz", hash = "sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be"}, + {file = "django_environ-0.11.2-py2.py3-none-any.whl", hash = "sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05"}, ] [package.extras] @@ -794,13 +811,13 @@ testing = ["coverage[toml] (>=5.0a4)", "pytest (>=4.6.11)"] [[package]] name = "django-formtools" -version = "2.4.1" +version = "2.5.1" description = "A set of high-level abstractions for Django forms" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "django-formtools-2.4.1.tar.gz", hash = "sha256:21f8d5dac737f1e636fa8a0a10969c1c32f525a6dfa27c29592827ba70d9643a"}, - {file = "django_formtools-2.4.1-py3-none-any.whl", hash = "sha256:49ea8a64ddef4728a558bf5f8f622c0f4053b979edcf193bf00dd80432ab2f12"}, + {file = "django-formtools-2.5.1.tar.gz", hash = "sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93"}, + {file = "django_formtools-2.5.1-py3-none-any.whl", hash = "sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a"}, ] [package.dependencies] @@ -808,13 +825,13 @@ Django = ">=3.2" [[package]] name = "django-otp" -version = "1.2.2" +version = "1.3.0" description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords." optional = false python-versions = ">=3.7" files = [ - {file = "django_otp-1.2.2-py3-none-any.whl", hash = "sha256:90765d5dac238a719f9550ac05681dd6307f513a81a10b6adb879b4abc6bc1a3"}, - {file = "django_otp-1.2.2.tar.gz", hash = "sha256:007a6354dabb3a1a54574bf73abf045ebbde0bb8734a38e2ed7845ba450f345e"}, + {file = "django_otp-1.3.0-py3-none-any.whl", hash = "sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060"}, + {file = "django_otp-1.3.0.tar.gz", hash = "sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c"}, ] [package.dependencies] @@ -825,20 +842,20 @@ qrcode = ["qrcode"] [[package]] name = "django-password-validators" -version = "1.7.1" +version = "1.7.3" description = "Additional libraries for validating passwords in Django." optional = false python-versions = "*" files = [ - {file = "django-password-validators-1.7.1.tar.gz", hash = "sha256:5f5fffb7d69ec3d9a81d41b159a8089e7f734b4715f93dd1814edd6e11a21796"}, - {file = "django_password_validators-1.7.1-py3-none-any.whl", hash = "sha256:16ee1d32d2ee9c0852f0c77f6e004fc115f58150d48cdca7d23ea269b22d0f30"}, + {file = "django-password-validators-1.7.3.tar.gz", hash = "sha256:7175aefa6e86dc002dd3539327bf2d752097651704927dc409a669259e0d2195"}, + {file = "django_password_validators-1.7.3-py3-none-any.whl", hash = "sha256:f243a82957e9b17a0c7cf5580f9d7588471cb6530c2dce7ee4e1222dddfe5768"}, ] [package.dependencies] -django = ">=2.2.8" +django = ">=3.0" [package.extras] -test = ["tox (>=2.3)"] +test = ["bump-my-version (>=0.12)", "tox (>=4.11)"] [[package]] name = "django-phonenumber-field" @@ -893,20 +910,20 @@ Django = ">=2.2" [[package]] name = "django-two-factor-auth" -version = "1.15.4" +version = "1.15.5" description = "Complete Two-Factor Authentication for Django" optional = false python-versions = "*" files = [ - {file = "django-two-factor-auth-1.15.4.tar.gz", hash = "sha256:6be4313069bffcaef8b657573ddc82f82e77da1a0bdb31175b1649c2411c0b0a"}, - {file = "django_two_factor_auth-1.15.4-py3-none-any.whl", hash = "sha256:4570ffa774bbced191f670079fea4e72a350ee91b2a937d5eb08e535ca47f1a6"}, + {file = "django-two-factor-auth-1.15.5.tar.gz", hash = "sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616"}, + {file = "django_two_factor_auth-1.15.5-py3-none-any.whl", hash = "sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746"}, ] [package.dependencies] Django = ">=3.2" django-formtools = "*" -django-otp = ">=0.8.0" -django-phonenumber-field = ">=1.1.0,<7" +django_otp = ">=0.8.0" +django-phonenumber-field = "<8" qrcode = ">=4.0.0,<7.99" [package.extras] @@ -949,13 +966,13 @@ pytz = "*" [[package]] name = "djlint" -version = "1.32.1" +version = "1.34.1" description = "HTML Template Linter and Formatter" optional = false python-versions = ">=3.8.0,<4.0.0" files = [ - {file = "djlint-1.32.1-py3-none-any.whl", hash = "sha256:8aaec6776376cfd41f3e742ed9f5e3c46dc7c6cd7646abf9e99860fb1ec9f19a"}, - {file = "djlint-1.32.1.tar.gz", hash = "sha256:c1e2141acf1547d244af7ef8abd15fbbae2abcc7a03e2bf31f8a491de69a6c72"}, + {file = "djlint-1.34.1-py3-none-any.whl", hash = "sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8"}, + {file = "djlint-1.34.1.tar.gz", hash = "sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346"}, ] [package.dependencies] @@ -966,7 +983,7 @@ html-tag-names = ">=0.1.2,<0.2.0" html-void-elements = ">=0.1.0,<0.2.0" jsbeautifier = ">=1.14.4,<2.0.0" json5 = ">=0.9.11,<0.10.0" -pathspec = ">=0.11.0,<0.12.0" +pathspec = ">=0.12.0,<0.13.0" PyYAML = ">=6.0,<7.0" regex = ">=2023.0.0,<2024.0.0" tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} @@ -974,32 +991,33 @@ tqdm = ">=4.62.2,<5.0.0" [[package]] name = "dnspython" -version = "2.4.2" +version = "2.5.0" description = "DNS toolkit" optional = false -python-versions = ">=3.8,<4.0" +python-versions = ">=3.8" files = [ - {file = "dnspython-2.4.2-py3-none-any.whl", hash = "sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8"}, - {file = "dnspython-2.4.2.tar.gz", hash = "sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984"}, + {file = "dnspython-2.5.0-py3-none-any.whl", hash = "sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6"}, + {file = "dnspython-2.5.0.tar.gz", hash = "sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15"}, ] [package.extras] -dnssec = ["cryptography (>=2.6,<42.0)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.24.1)"] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=5.0.3)", "mypy (>=1.0.1)", "pylint (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0.0)", "sphinx (>=7.0.0)", "twine (>=4.0.0)", "wheel (>=0.41.0)"] +dnssec = ["cryptography (>=41)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.25.1)"] doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1,<4.0)"] -trio = ["trio (>=0.14,<0.23)"] -wmi = ["wmi (>=1.5.1,<2.0.0)"] +idna = ["idna (>=2.1)"] +trio = ["trio (>=0.14)"] +wmi = ["wmi (>=1.5.1)"] [[package]] name = "drf-standardized-errors" -version = "0.12.5" +version = "0.12.6" description = "Standardize your API error responses." optional = false python-versions = ">=3.8" files = [ - {file = "drf-standardized-errors-0.12.5.tar.gz", hash = "sha256:20db40c4f4288c36046ee6e0e3727539fbe3306d60f6f1aa88326629022f69c4"}, - {file = "drf_standardized_errors-0.12.5-py3-none-any.whl", hash = "sha256:46eda8c7442730a7d0069f6213ea588e5c386dc2858a14b9a3ae08e78fd8975d"}, + {file = "drf_standardized_errors-0.12.6-py3-none-any.whl", hash = "sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee"}, + {file = "drf_standardized_errors-0.12.6.tar.gz", hash = "sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d"}, ] [package.dependencies] @@ -1026,13 +1044,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -1058,13 +1076,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "19.3.1" +version = "22.6.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-19.3.1-py3-none-any.whl", hash = "sha256:e2722fdf622cf24e974aaba15a3dee97a6f8b98d869bd827ff1af9c87695af46"}, - {file = "Faker-19.3.1.tar.gz", hash = "sha256:a6624d9574623bb27dfca33fff94581cd7b23b562901db8ad59acbde9a52543e"}, + {file = "Faker-22.6.0-py3-none-any.whl", hash = "sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d"}, + {file = "Faker-22.6.0.tar.gz", hash = "sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26"}, ] [package.dependencies] @@ -1073,53 +1091,53 @@ typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\ [[package]] name = "fonttools" -version = "4.46.0" +version = "4.47.2" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.46.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d4e69e2c7f93b695d2e6f18f709d501d945f65c1d237dafaabdd23cd935a5276"}, - {file = "fonttools-4.46.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:25852f0c63df0af022f698464a4a80f7d1d5bd974bcd22f995f6b4ad198e32dd"}, - {file = "fonttools-4.46.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adab73618d0a328b203a0e242b3eba60a2b5662d9cb2bd16ed9c52af8a7d86af"}, - {file = "fonttools-4.46.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf923a4a556ab4cc4c52f69a4a2db624cf5a2cf360394368b40c5152fe3321e"}, - {file = "fonttools-4.46.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:87c214197712cc14fd2a4621efce2a9c501a77041232b789568149a8a3161517"}, - {file = "fonttools-4.46.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:156ae342a1ed1fe38e180de471e98fbf5b2b6ae280fa3323138569c4ca215844"}, - {file = "fonttools-4.46.0-cp310-cp310-win32.whl", hash = "sha256:c506e3d3a9e898caee4dc094f34b49c5566870d5a2d1ca2125f0a9f35ecc2205"}, - {file = "fonttools-4.46.0-cp310-cp310-win_amd64.whl", hash = "sha256:f8bc3973ed58893c4107993e0a7ae34901cb572b5e798249cbef35d30801ffd4"}, - {file = "fonttools-4.46.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:982f69855ac258260f51048d9e0c53c5f19881138cc7ca06deb38dc4b97404b6"}, - {file = "fonttools-4.46.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c23c59d321d62588620f2255cf951270bf637d88070f38ed8b5e5558775b86c"}, - {file = "fonttools-4.46.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0e94244ec24a940ecfbe5b31c975c8a575d5ed2d80f9a280ce3b21fa5dc9c34"}, - {file = "fonttools-4.46.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a9f9cdd7ef63d1b8ac90db335762451452426b3207abd79f60da510cea62da5"}, - {file = "fonttools-4.46.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ca9eceebe70035b057ce549e2054cad73e95cac3fe91a9d827253d1c14618204"}, - {file = "fonttools-4.46.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8be6adfa4e15977075278dd0a0bae74dec59be7b969b5ceed93fb86af52aa5be"}, - {file = "fonttools-4.46.0-cp311-cp311-win32.whl", hash = "sha256:7b5636f5706d49f13b6d610fe54ee662336cdf56b5a6f6683c0b803e23d826d2"}, - {file = "fonttools-4.46.0-cp311-cp311-win_amd64.whl", hash = "sha256:49ea0983e55fd7586a809787cd4644a7ae471e53ab8ddc016f9093b400e32646"}, - {file = "fonttools-4.46.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7b460720ce81773da1a3e7cc964c48e1e11942b280619582a897fa0117b56a62"}, - {file = "fonttools-4.46.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8bee9f4fc8c99824a424ae45c789ee8c67cb84f8e747afa7f83b7d3cef439c3b"}, - {file = "fonttools-4.46.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3d7b96aba96e05e8c911ce2dfc5acc6a178b8f44f6aa69371ab91aa587563da"}, - {file = "fonttools-4.46.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e6aeb5c340416d11a3209d75c48d13e72deea9e1517837dd1522c1fd1f17c11"}, - {file = "fonttools-4.46.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c779f8701deedf41908f287aeb775b8a6f59875ad1002b98ac6034ae4ddc1b7b"}, - {file = "fonttools-4.46.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ce199227ce7921eaafdd4f96536f16b232d6b580ce74ce337de544bf06cb2752"}, - {file = "fonttools-4.46.0-cp312-cp312-win32.whl", hash = "sha256:1c9937c4dd1061afd22643389445fabda858af5e805860ec3082a4bc07c7a720"}, - {file = "fonttools-4.46.0-cp312-cp312-win_amd64.whl", hash = "sha256:a9fa52ef8fd14d7eb3d813e1451e7ace3e1eebfa9b7237d3f81fee8f3de6a114"}, - {file = "fonttools-4.46.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c94564b1f3b5dd87e73577610d85115b1936edcc596deaf84a31bbe70e17456b"}, - {file = "fonttools-4.46.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4a50a1dfad7f7ba5ca3f99cc73bf5cdac67ceade8e4b355a877521f20ad1b63"}, - {file = "fonttools-4.46.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89c2c520f9492844ecd6316d20c6c7a157b5c0cb73a1411b3db28ee304f30122"}, - {file = "fonttools-4.46.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5b7905fd68eacb7cc56a13139da5c312c45baae6950dd00b02563c54508a041"}, - {file = "fonttools-4.46.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8485cc468288e213f31afdaf1fdda3c79010f542559fbba936a54f4644df2570"}, - {file = "fonttools-4.46.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:87c3299da7da55394fb324349db0ede38114a46aafd0e7dfcabfecd28cdd94c3"}, - {file = "fonttools-4.46.0-cp38-cp38-win32.whl", hash = "sha256:f5f1423a504ccc329efb5aa79738de83d38c072be5308788dde6bd419969d7f5"}, - {file = "fonttools-4.46.0-cp38-cp38-win_amd64.whl", hash = "sha256:6d4a4ebcc76e30898ff3296ea786491c70e183f738319ae2629e0d44f17ece42"}, - {file = "fonttools-4.46.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9a0e422ab79e5cb2b47913be6a4b5fd20c4c7ac34a24f3691a4e099e965e0b8"}, - {file = "fonttools-4.46.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:13ac0cba2fc63fa4b232f2a7971f35f35c6eaf10bd1271fa96d4ce6253a8acfd"}, - {file = "fonttools-4.46.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:795150d5edc595e1a2cfb3d65e8f4f3d027704fc2579f8990d381bef6b188eb6"}, - {file = "fonttools-4.46.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d00fc63131dcac6b25f50a5a129758438317e54e3ce5587163f7058de4b0e933"}, - {file = "fonttools-4.46.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3033b55f401a622de2630b3982234d97219d89b058607b87927eccb0f922313c"}, - {file = "fonttools-4.46.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e26e7fb908ae4f622813e7cb32cd2db6c24e3122bb3b98f25e832a2fe0e7e228"}, - {file = "fonttools-4.46.0-cp39-cp39-win32.whl", hash = "sha256:2d0eba685938c603f2f648dfc0aadbf8c6a4fe1c7ca608c2970a6ef39e00f254"}, - {file = "fonttools-4.46.0-cp39-cp39-win_amd64.whl", hash = "sha256:5200b01f463d97cc2b7ff8a1e3584151f4413e98cb8419da5f17d1dbb84cc214"}, - {file = "fonttools-4.46.0-py3-none-any.whl", hash = "sha256:5b627ed142398ea9202bd752c04311592558964d1a765fb2f78dc441a05633f4"}, - {file = "fonttools-4.46.0.tar.gz", hash = "sha256:2ae45716c27a41807d58a9f3f59983bdc8c0a46cb259e4450ab7e196253a9853"}, + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df"}, + {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c"}, + {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670"}, + {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c"}, + {file = "fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0"}, + {file = "fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b"}, + {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c"}, + {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e"}, + {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703"}, + {file = "fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c"}, + {file = "fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635"}, + {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb"}, + {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71"}, + {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f"}, + {file = "fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085"}, + {file = "fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc"}, + {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa"}, + {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6"}, + {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946"}, + {file = "fonttools-4.47.2-cp38-cp38-win32.whl", hash = "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b"}, + {file = "fonttools-4.47.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6"}, + {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37"}, + {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899"}, + {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7"}, + {file = "fonttools-4.47.2-cp39-cp39-win32.whl", hash = "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50"}, + {file = "fonttools-4.47.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8"}, + {file = "fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184"}, + {file = "fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3"}, ] [package.dependencies] @@ -1128,9 +1146,9 @@ brotlicffi = {version = ">=0.8.0", optional = true, markers = "platform_python_i zopfli = {version = ">=0.1.4", optional = true, markers = "extra == \"woff\""} [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] +interpolatable = ["munkres", "pycairo", "scipy"] lxml = ["lxml (>=4.0,<5)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] @@ -1143,13 +1161,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "googleapis-common-protos" -version = "1.60.0" +version = "1.62.0" description = "Common protobufs used in Google APIs" optional = false python-versions = ">=3.7" files = [ - {file = "googleapis-common-protos-1.60.0.tar.gz", hash = "sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708"}, - {file = "googleapis_common_protos-1.60.0-py2.py3-none-any.whl", hash = "sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918"}, + {file = "googleapis-common-protos-1.62.0.tar.gz", hash = "sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277"}, + {file = "googleapis_common_protos-1.62.0-py2.py3-none-any.whl", hash = "sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07"}, ] [package.dependencies] @@ -1160,66 +1178,68 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "granian" -version = "0.7.0" +version = "1.0.2" description = "A Rust HTTP server for Python applications" optional = false python-versions = ">=3.8" files = [ - {file = "granian-0.7.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:e5414dc976266b482330ecafcf94656d9042b6d0f33f030c7dd30a976faa3fd9"}, - {file = "granian-0.7.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3ce74ec097dd92dd01632211b6a656db56683afb862f02a267b69fc09f702339"}, - {file = "granian-0.7.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172de2f6c4bb231e560c8679a8ecd56995cb8554f3ab3e9f600a5c2aebb27917"}, - {file = "granian-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e0a1975f3a51659233b7d6671f6718477fbfc8208f9051a28617af9ea655c3"}, - {file = "granian-0.7.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1cb392572df79f75775be0298d2aa62c8a573c49261b56bc012e29a052c1b4d2"}, - {file = "granian-0.7.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6949c7594798d201baa62e9eccb4c7662c75ed87dbbb28bed585c5078e82a882"}, - {file = "granian-0.7.0-cp310-none-win_amd64.whl", hash = "sha256:57fb2036a199037373bfef7bebf3452ca147501b1d57581853874bce61a72eb7"}, - {file = "granian-0.7.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:4d8b18149d63a5a92d3cffb8bee115d3a59137cafaeb962b7e45e984f43b5c0d"}, - {file = "granian-0.7.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:cbc7ad1ecdd2f71c3a9bfe8e04d6e2b466d1f32388a323468526aae420cd0e93"}, - {file = "granian-0.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7237071088cbaa8fff88f025062885019f30d5465a11f60d5172c17e44a93e4f"}, - {file = "granian-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3b30894a5c8e21d41dc1eba052b6cf569fb5dbf27988bc68bf5384c845bf147"}, - {file = "granian-0.7.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:50349d6ab546d7cbe88c34e08c1e16cae5ac70f48e08b2b9a237f30709f35bf8"}, - {file = "granian-0.7.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1e8129b1e1bbdcfa407d07ee861a3d201a5b916e0f0bcba7c7aaa22c0b17488d"}, - {file = "granian-0.7.0-cp311-none-win_amd64.whl", hash = "sha256:5d76198b6d876732f2389d4eed83e33b00c8bf40380d0963d26a6ccb8918606a"}, - {file = "granian-0.7.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:a52d665e5eb160d66d1c0ab001180e5dd1b386d687c6c03981038c9e21d42a61"}, - {file = "granian-0.7.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d476c10452ccd27e09b4fdbe24f92d6d1cd78f2acd4da98ca6d1606bff08f18a"}, - {file = "granian-0.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:293e3a406506c04741c1055b49f892aec5677ca060318b34360ea977087c8196"}, - {file = "granian-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578ca2cb2117c96836e0b2573ffd345f358b8da0647ef29893eaf837840e2a5d"}, - {file = "granian-0.7.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:cced24e44041a8e0e07265a9a1f3227ef64171716b6204770c6e3e1e0842becf"}, - {file = "granian-0.7.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:db818af6305f941ea516bb73aa703d61a57f83affa47b5d530ff6f19c7d97983"}, - {file = "granian-0.7.0-cp312-none-win_amd64.whl", hash = "sha256:374443b4fcc7dad1d420fdf298a43858ca0cbec9a0d0048696abb9c043a7b0ae"}, - {file = "granian-0.7.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6e54d153616cc3be59306cde6a4e55fcc07e45403f309a5c5fe8681e85069814"}, - {file = "granian-0.7.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3813e900aca1d62091254b7c9340eb33d74c6b133b32efd70834a48265111f03"}, - {file = "granian-0.7.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e60d57cf3bad9cc84a75d0b6c9ca5e97f5b571a4c47705c5390f13ac98e783"}, - {file = "granian-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9efc78ada79079d0ce2f6e61abb71528671572a858d44a2b85268346795cf3a7"}, - {file = "granian-0.7.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:815d5833549957e68d7d429453c58575aa80440795a6fb1accbc0c46d6a32b3e"}, - {file = "granian-0.7.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0338b371b9d894500fd83ec5d1d2f33ef775084bf5d28f5fecd25e092375b0a7"}, - {file = "granian-0.7.0-cp38-none-win_amd64.whl", hash = "sha256:cf014963ec58482a16bf95d1ddd86216a2c1f7208f7bf00ff3ecc8804f0d9750"}, - {file = "granian-0.7.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1fa1412ac05ab8bfa1000cfea15fa04aaeaa81ac03d41c4142a021b0c0ec21b4"}, - {file = "granian-0.7.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:369e4aaed10996aca4cb5fdd98b3339a6b6d2e7389a079aecd8acafe954f5b24"}, - {file = "granian-0.7.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27710fdc406dcada02c0b52f0d6375bfbb1f4b198b23d5000d4925e756751a01"}, - {file = "granian-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f80e1722c657fd5a7054ada83e0cd98aeb5d59a0b796a92027c9587cace0e1c3"}, - {file = "granian-0.7.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:828ac7d024f5ada284d2c815a74c07f26bde2856b613b673d992b6da2ba50245"}, - {file = "granian-0.7.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff196a3d5e6c8d18f12d0115bbfcb2f7312ab0681672cdc00ab14c5cb1a47464"}, - {file = "granian-0.7.0-cp39-none-win_amd64.whl", hash = "sha256:ea9c05dd7190cd6105abb7b4b2bc6dc5bd13daa3827c463cc887ef0c83b6280e"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2a1075fe58ab638def736dd4a6edacb2a3c042bbf8dbfdaec7584aa7bcffc01c"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:be03ab8dddd7acffcb6e758081973e6bd517b7eb4d3f83046220e55e26bff02a"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9ff2a0b113dee5dd01636ebf409e215141bd3449c7522011c9688479a40a6f7"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cffd1bba4dc3e29278d42ed7c6237229c293d12c3e346dd14bed89de9b4dc2"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a21c117d4bd78055ba253a53ce7bef0c539b6a042731289f3fb78b1e2377bcea"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a912e5bcc144c25299e22713bcf4faafa6a0af2a81b8702ba88fa5f5646dedc2"}, - {file = "granian-0.7.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:00b20f2e9bb634acc2d886d5cf80efa2151648bbccbf0096a719bb8daa460fb0"}, - {file = "granian-0.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a092ba050e9f593384aa0c200d7c57a249ae5a3bbf89a788bb1ac9147320584"}, - {file = "granian-0.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d938e81cd59d0de89654ad0a081a44c2858e05afac5f9266fd2cc85f4f0735f9"}, - {file = "granian-0.7.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:a3173482ce292a31f19d7497941401a648fb727a5ffaa2d979ea8866ccacd7a3"}, - {file = "granian-0.7.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:336364e7d4fca955eb2dc7b0a24fcc7c32ce3b80f496d3c97191015d22d62c11"}, - {file = "granian-0.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:c6c0e0c0e3dd1bffd61a14f2ab13e5c4798d4802fb2253893eb9a98713dfb3d9"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0c54219c9929bcda408386d60983d7fb8dae14e4e7fb802e3fc0ce92a99bb472"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d89690242217879ddb5635ed340bd67877026dca68d995382ed37c90a14ca2f0"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdc6c4417460efba6ea7e4563371d43e49f336655c295e0b9b4e5daef5f63db0"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce968248ca1b8b66ae12440e9283b5a65b58264b3c5a3b3a6d90035e186e964f"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e588864e6bd3479a28c96536b200e257932074f5326b2f67f535091767402993"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:cf6b6d5ed34bf6d9018949c51bcf829c0b11ef25c90b90f6d28330e3dfeaa1b9"}, - {file = "granian-0.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ef34bd268566dc4cae942fe30651461005526635c24df42f9600b2a199dff39c"}, - {file = "granian-0.7.0.tar.gz", hash = "sha256:01f9fcd0b1a3126f59a5205ddb0688b91cf9c4ce9511cb3bee3bd2b8e9404638"}, + {file = "granian-1.0.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f"}, + {file = "granian-1.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf"}, + {file = "granian-1.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8"}, + {file = "granian-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664"}, + {file = "granian-1.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879"}, + {file = "granian-1.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032"}, + {file = "granian-1.0.2-cp310-none-win_amd64.whl", hash = "sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7"}, + {file = "granian-1.0.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5"}, + {file = "granian-1.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3"}, + {file = "granian-1.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9"}, + {file = "granian-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1"}, + {file = "granian-1.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582"}, + {file = "granian-1.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208"}, + {file = "granian-1.0.2-cp311-none-win_amd64.whl", hash = "sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815"}, + {file = "granian-1.0.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5"}, + {file = "granian-1.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711"}, + {file = "granian-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa"}, + {file = "granian-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f"}, + {file = "granian-1.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82"}, + {file = "granian-1.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43"}, + {file = "granian-1.0.2-cp312-none-win_amd64.whl", hash = "sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b"}, + {file = "granian-1.0.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81"}, + {file = "granian-1.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8"}, + {file = "granian-1.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720"}, + {file = "granian-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a"}, + {file = "granian-1.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897"}, + {file = "granian-1.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2"}, + {file = "granian-1.0.2-cp38-none-win_amd64.whl", hash = "sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9"}, + {file = "granian-1.0.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c"}, + {file = "granian-1.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149"}, + {file = "granian-1.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df"}, + {file = "granian-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc"}, + {file = "granian-1.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810"}, + {file = "granian-1.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce"}, + {file = "granian-1.0.2-cp39-none-win_amd64.whl", hash = "sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4"}, + {file = "granian-1.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852"}, + {file = "granian-1.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803"}, + {file = "granian-1.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056"}, + {file = "granian-1.0.2.tar.gz", hash = "sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7"}, ] [package.dependencies] @@ -1228,7 +1248,7 @@ uvloop = {version = ">=0.18.0,<0.19.0", markers = "sys_platform != \"win32\" and watchfiles = ">=0.21,<1.0" [package.extras] -lint = ["black (>=23.9.0,<23.10.0)", "ruff (>=0.0.292,<0.1.0)"] +lint = ["ruff (>=0.1.0,<0.2.0)"] test = ["httpx (>=0.25.0,<0.26.0)", "pytest (>=7.4.2,<7.5.0)", "pytest-asyncio (>=0.21.1,<0.22.0)", "websockets (>=11.0,<12.0)"] [[package]] @@ -1392,13 +1412,13 @@ lxml = ["lxml"] [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] @@ -1418,40 +1438,40 @@ six = "*" [[package]] name = "importlib-metadata" -version = "6.8.0" +version = "6.11.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" -version = "6.0.1" +version = "6.1.1" description = "Read resources from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_resources-6.0.1-py3-none-any.whl", hash = "sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf"}, - {file = "importlib_resources-6.0.1.tar.gz", hash = "sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4"}, + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "inflection" @@ -1493,12 +1513,12 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsbeautifier" -version = "1.14.9" +version = "1.14.11" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "jsbeautifier-1.14.9.tar.gz", hash = "sha256:c738ebc36b47bd94e4ca6dd17a9004c3cc74edad582ca1d60e0e5d5945a63cb9"}, + {file = "jsbeautifier-1.14.11.tar.gz", hash = "sha256:6b632581ea60dd1c133cd25a48ad187b4b91f526623c4b0fb5443ef805250505"}, ] [package.dependencies] @@ -1521,13 +1541,13 @@ dev = ["hypothesis"] [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1544,170 +1564,172 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "lazy-object-proxy" -version = "1.9.0" +version = "1.10.0" description = "A fast and thorough lazy object proxy." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, - {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, - {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, - {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, - {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, - {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, + {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, + {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, + {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, + {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, + {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, + {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, + {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] [[package]] name = "lxml" -version = "4.9.3" +version = "4.9.4" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ - {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, - {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, - {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, - {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, - {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, - {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, - {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, - {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, - {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, - {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, - {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, - {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, - {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, - {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, - {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, - {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, - {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, - {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, - {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, - {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, - {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, - {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, - {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, - {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, - {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, - {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, - {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, - {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, - {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, - {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, - {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, - {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, - {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, - {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, - {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, - {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, - {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, - {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, - {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, - {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, - {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, - {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, - {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, - {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, - {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, + {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722"}, + {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1"}, + {file = "lxml-4.9.4-cp27-cp27m-win32.whl", hash = "sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013"}, + {file = "lxml-4.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69"}, + {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2"}, + {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48"}, + {file = "lxml-4.9.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8"}, + {file = "lxml-4.9.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644"}, + {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663"}, + {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307"}, + {file = "lxml-4.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91"}, + {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868"}, + {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7"}, + {file = "lxml-4.9.4-cp310-cp310-win32.whl", hash = "sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be"}, + {file = "lxml-4.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5"}, + {file = "lxml-4.9.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28"}, + {file = "lxml-4.9.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2"}, + {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97"}, + {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e"}, + {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a"}, + {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979"}, + {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac"}, + {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622"}, + {file = "lxml-4.9.4-cp311-cp311-win32.whl", hash = "sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3"}, + {file = "lxml-4.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8"}, + {file = "lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8"}, + {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229"}, + {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d"}, + {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20"}, + {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10"}, + {file = "lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b"}, + {file = "lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56"}, + {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20"}, + {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66"}, + {file = "lxml-4.9.4-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7"}, + {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85"}, + {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23"}, + {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745"}, + {file = "lxml-4.9.4-cp36-cp36m-win32.whl", hash = "sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be"}, + {file = "lxml-4.9.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964"}, + {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9"}, + {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d"}, + {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02"}, + {file = "lxml-4.9.4-cp37-cp37m-win32.whl", hash = "sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e"}, + {file = "lxml-4.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc"}, + {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192"}, + {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37"}, + {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9"}, + {file = "lxml-4.9.4-cp38-cp38-win32.whl", hash = "sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c"}, + {file = "lxml-4.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46"}, + {file = "lxml-4.9.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382"}, + {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573"}, + {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847"}, + {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab"}, + {file = "lxml-4.9.4-cp39-cp39-win32.whl", hash = "sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec"}, + {file = "lxml-4.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899"}, + {file = "lxml-4.9.4-pp310-pypy310_pp73-macosx_11_0_x86_64.whl", hash = "sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0"}, + {file = "lxml-4.9.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4"}, + {file = "lxml-4.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7"}, + {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5"}, + {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba"}, + {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771"}, + {file = "lxml-4.9.4-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7"}, + {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca"}, + {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45"}, + {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58"}, + {file = "lxml-4.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2"}, + {file = "lxml-4.9.4-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5"}, + {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683"}, + {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c"}, + {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd"}, + {file = "lxml-4.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137"}, + {file = "lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.35)"] +source = ["Cython (==0.29.37)"] [[package]] name = "markdown-it-py" @@ -1735,61 +1757,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.4" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, + {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, + {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, + {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, + {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, + {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, + {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, + {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, ] [[package]] @@ -1817,43 +1849,6 @@ files = [ [package.dependencies] django = ">=1.11.0" -[[package]] -name = "numpy" -version = "1.24.4" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.8" -files = [ - {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, - {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, - {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, - {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, - {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, - {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, - {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, - {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, - {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, - {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, - {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, - {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, - {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, - {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, - {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, - {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, - {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, - {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, - {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, -] - [[package]] name = "opentelemetry-api" version = "1.20.0" @@ -2140,114 +2135,132 @@ asn1crypto = ">=1.5.1" [[package]] name = "overrides" -version = "7.4.0" +version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." optional = false python-versions = ">=3.6" files = [ - {file = "overrides-7.4.0-py3-none-any.whl", hash = "sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d"}, - {file = "overrides-7.4.0.tar.gz", hash = "sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757"}, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "phonenumbers" -version = "8.13.19" +version = "8.13.29" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ - {file = "phonenumbers-8.13.19-py2.py3-none-any.whl", hash = "sha256:ba542f20f6dc83be8f127f240f9b5b7e7c1dec42aceff1879400d4dc0c781d81"}, - {file = "phonenumbers-8.13.19.tar.gz", hash = "sha256:38180247697240ccedd74dec4bfbdbc22bb108b9c5f991f270ca3e41395e6f96"}, + {file = "phonenumbers-8.13.29-py2.py3-none-any.whl", hash = "sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293"}, + {file = "phonenumbers-8.13.29.tar.gz", hash = "sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf"}, ] [[package]] name = "pillow" -version = "10.1.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.1.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106"}, - {file = "Pillow-10.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593"}, - {file = "Pillow-10.1.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f"}, - {file = "Pillow-10.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818"}, - {file = "Pillow-10.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7"}, - {file = "Pillow-10.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172"}, - {file = "Pillow-10.1.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262"}, - {file = "Pillow-10.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992"}, - {file = "Pillow-10.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b"}, - {file = "Pillow-10.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de"}, - {file = "Pillow-10.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b"}, - {file = "Pillow-10.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f"}, - {file = "Pillow-10.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"}, - {file = "Pillow-10.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01"}, - {file = "Pillow-10.1.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80"}, - {file = "Pillow-10.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212"}, - {file = "Pillow-10.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099"}, - {file = "Pillow-10.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34"}, - {file = "Pillow-10.1.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28"}, - {file = "Pillow-10.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2"}, - {file = "Pillow-10.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4"}, - {file = "Pillow-10.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b"}, - {file = "Pillow-10.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f"}, - {file = "Pillow-10.1.0.tar.gz", hash = "sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "pkgutil-resolve-name" @@ -2262,13 +2275,13 @@ files = [ [[package]] name = "pluggy" -version = "1.2.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, - {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -2277,18 +2290,16 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "prompt-toolkit" -version = "2.0.10" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=2.6,<3.0.dev0 || >=3.3.dev0" +python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-2.0.10-py2-none-any.whl", hash = "sha256:e7f8af9e3d70f514373bf41aa51bc33af12a6db3f71461ea47fea985defb2c31"}, - {file = "prompt_toolkit-2.0.10-py3-none-any.whl", hash = "sha256:46642344ce457641f28fc9d1c9ca939b63dadf8df128b86f1b9860e59c73a5e4"}, - {file = "prompt_toolkit-2.0.10.tar.gz", hash = "sha256:f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] -six = ">=1.9.0" wcwidth = "*" [[package]] @@ -2315,22 +2326,24 @@ files = [ [[package]] name = "psycopg2" -version = "2.9.7" +version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "psycopg2-2.9.7-cp310-cp310-win32.whl", hash = "sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084"}, - {file = "psycopg2-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5"}, - {file = "psycopg2-2.9.7-cp311-cp311-win32.whl", hash = "sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1"}, - {file = "psycopg2-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9"}, - {file = "psycopg2-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2"}, - {file = "psycopg2-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8"}, - {file = "psycopg2-2.9.7-cp38-cp38-win32.whl", hash = "sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2"}, - {file = "psycopg2-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866"}, - {file = "psycopg2-2.9.7-cp39-cp39-win32.whl", hash = "sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5"}, - {file = "psycopg2-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723"}, - {file = "psycopg2-2.9.7.tar.gz", hash = "sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8"}, + {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, + {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, + {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, + {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, + {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, + {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, + {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, + {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, + {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, + {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, + {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, ] [[package]] @@ -2346,18 +2359,18 @@ files = [ [[package]] name = "pydantic" -version = "2.5.1" +version = "2.6.0" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.5.1-py3-none-any.whl", hash = "sha256:dc5244a8939e0d9a68f1f1b5f550b2e1c879912033b1becbedb315accc75441b"}, - {file = "pydantic-2.5.1.tar.gz", hash = "sha256:0b8be5413c06aadfbe56f6dc1d45c9ed25fd43264414c571135c97dd77c2bedb"}, + {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, + {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.14.3" +pydantic-core = "2.16.1" typing-extensions = ">=4.6.1" [package.extras] @@ -2365,116 +2378,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.14.3" +version = "2.16.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.14.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ba44fad1d114539d6a1509966b20b74d2dec9a5b0ee12dd7fd0a1bb7b8785e5f"}, - {file = "pydantic_core-2.14.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4a70d23eedd88a6484aa79a732a90e36701048a1509078d1b59578ef0ea2cdf5"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cc24728a1a9cef497697e53b3d085fb4d3bc0ef1ef4d9b424d9cf808f52c146"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ab4a2381005769a4af2ffddae74d769e8a4aae42e970596208ec6d615c6fb080"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:905a12bf088d6fa20e094f9a477bf84bd823651d8b8384f59bcd50eaa92e6a52"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:38aed5a1bbc3025859f56d6a32f6e53ca173283cb95348e03480f333b1091e7d"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1767bd3f6370458e60c1d3d7b1d9c2751cc1ad743434e8ec84625a610c8b9195"}, - {file = "pydantic_core-2.14.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7cb0c397f29688a5bd2c0dbd44451bc44ebb9b22babc90f97db5ec3e5bb69977"}, - {file = "pydantic_core-2.14.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9ff737f24b34ed26de62d481ef522f233d3c5927279f6b7229de9b0deb3f76b5"}, - {file = "pydantic_core-2.14.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a1a39fecb5f0b19faee9a8a8176c805ed78ce45d760259a4ff3d21a7daa4dfc1"}, - {file = "pydantic_core-2.14.3-cp310-none-win32.whl", hash = "sha256:ccbf355b7276593c68fa824030e68cb29f630c50e20cb11ebb0ee450ae6b3d08"}, - {file = "pydantic_core-2.14.3-cp310-none-win_amd64.whl", hash = "sha256:536e1f58419e1ec35f6d1310c88496f0d60e4f182cacb773d38076f66a60b149"}, - {file = "pydantic_core-2.14.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:f1f46700402312bdc31912f6fc17f5ecaaaa3bafe5487c48f07c800052736289"}, - {file = "pydantic_core-2.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:88ec906eb2d92420f5b074f59cf9e50b3bb44f3cb70e6512099fdd4d88c2f87c"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:056ea7cc3c92a7d2a14b5bc9c9fa14efa794d9f05b9794206d089d06d3433dc7"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:076edc972b68a66870cec41a4efdd72a6b655c4098a232314b02d2bfa3bfa157"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e71f666c3bf019f2490a47dddb44c3ccea2e69ac882f7495c68dc14d4065eac2"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f518eac285c9632be337323eef9824a856f2680f943a9b68ac41d5f5bad7df7c"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dbab442a8d9ca918b4ed99db8d89d11b1f067a7dadb642476ad0889560dac79"}, - {file = "pydantic_core-2.14.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0653fb9fc2fa6787f2fa08631314ab7fc8070307bd344bf9471d1b7207c24623"}, - {file = "pydantic_core-2.14.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c54af5069da58ea643ad34ff32fd6bc4eebb8ae0fef9821cd8919063e0aeeaab"}, - {file = "pydantic_core-2.14.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc956f78651778ec1ab105196e90e0e5f5275884793ab67c60938c75bcca3989"}, - {file = "pydantic_core-2.14.3-cp311-none-win32.whl", hash = "sha256:5b73441a1159f1fb37353aaefb9e801ab35a07dd93cb8177504b25a317f4215a"}, - {file = "pydantic_core-2.14.3-cp311-none-win_amd64.whl", hash = "sha256:7349f99f1ef8b940b309179733f2cad2e6037a29560f1b03fdc6aa6be0a8d03c"}, - {file = "pydantic_core-2.14.3-cp311-none-win_arm64.whl", hash = "sha256:ec79dbe23702795944d2ae4c6925e35a075b88acd0d20acde7c77a817ebbce94"}, - {file = "pydantic_core-2.14.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8f5624f0f67f2b9ecaa812e1dfd2e35b256487566585160c6c19268bf2ffeccc"}, - {file = "pydantic_core-2.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6c2d118d1b6c9e2d577e215567eedbe11804c3aafa76d39ec1f8bc74e918fd07"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe863491664c6720d65ae438d4efaa5eca766565a53adb53bf14bc3246c72fe0"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:136bc7247e97a921a020abbd6ef3169af97569869cd6eff41b6a15a73c44ea9b"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aeafc7f5bbddc46213707266cadc94439bfa87ecf699444de8be044d6d6eb26f"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e16aaf788f1de5a85c8f8fcc9c1ca1dd7dd52b8ad30a7889ca31c7c7606615b8"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc652c354d3362e2932a79d5ac4bbd7170757a41a62c4fe0f057d29f10bebb"}, - {file = "pydantic_core-2.14.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f1b92e72babfd56585c75caf44f0b15258c58e6be23bc33f90885cebffde3400"}, - {file = "pydantic_core-2.14.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:75f3f534f33651b73f4d3a16d0254de096f43737d51e981478d580f4b006b427"}, - {file = "pydantic_core-2.14.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c9ffd823c46e05ef3eb28b821aa7bc501efa95ba8880b4a1380068e32c5bed47"}, - {file = "pydantic_core-2.14.3-cp312-none-win32.whl", hash = "sha256:12e05a76b223577a4696c76d7a6b36a0ccc491ffb3c6a8cf92d8001d93ddfd63"}, - {file = "pydantic_core-2.14.3-cp312-none-win_amd64.whl", hash = "sha256:1582f01eaf0537a696c846bea92082082b6bfc1103a88e777e983ea9fbdc2a0f"}, - {file = "pydantic_core-2.14.3-cp312-none-win_arm64.whl", hash = "sha256:96fb679c7ca12a512d36d01c174a4fbfd912b5535cc722eb2c010c7b44eceb8e"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:71ed769b58d44e0bc2701aa59eb199b6665c16e8a5b8b4a84db01f71580ec448"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:5402ee0f61e7798ea93a01b0489520f2abfd9b57b76b82c93714c4318c66ca06"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eaab9dc009e22726c62fe3b850b797e7f0e7ba76d245284d1064081f512c7226"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:92486a04d54987054f8b4405a9af9d482e5100d6fe6374fc3303015983fc8bda"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf08b43d1d5d1678f295f0431a4a7e1707d4652576e1d0f8914b5e0213bfeee5"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8ca13480ce16daad0504be6ce893b0ee8ec34cd43b993b754198a89e2787f7e"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44afa3c18d45053fe8d8228950ee4c8eaf3b5a7f3b64963fdeac19b8342c987f"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56814b41486e2d712a8bc02a7b1f17b87fa30999d2323bbd13cf0e52296813a1"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c3dc2920cc96f9aa40c6dc54256e436cc95c0a15562eb7bd579e1811593c377e"}, - {file = "pydantic_core-2.14.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e483b8b913fcd3b48badec54185c150cb7ab0e6487914b84dc7cde2365e0c892"}, - {file = "pydantic_core-2.14.3-cp37-none-win32.whl", hash = "sha256:364dba61494e48f01ef50ae430e392f67ee1ee27e048daeda0e9d21c3ab2d609"}, - {file = "pydantic_core-2.14.3-cp37-none-win_amd64.whl", hash = "sha256:a402ae1066be594701ac45661278dc4a466fb684258d1a2c434de54971b006ca"}, - {file = "pydantic_core-2.14.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:10904368261e4509c091cbcc067e5a88b070ed9a10f7ad78f3029c175487490f"}, - {file = "pydantic_core-2.14.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:260692420028319e201b8649b13ac0988974eeafaaef95d0dfbf7120c38dc000"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c1bf1a7b05a65d3b37a9adea98e195e0081be6b17ca03a86f92aeb8b110f468"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7abd17a838a52140e3aeca271054e321226f52df7e0a9f0da8f91ea123afe98"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a5c51460ede609fbb4fa883a8fe16e749964ddb459966d0518991ec02eb8dfb9"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d06c78074646111fb01836585f1198367b17d57c9f427e07aaa9ff499003e58d"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af452e69446fadf247f18ac5d153b1f7e61ef708f23ce85d8c52833748c58075"}, - {file = "pydantic_core-2.14.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3ad4968711fb379a67c8c755beb4dae8b721a83737737b7bcee27c05400b047"}, - {file = "pydantic_core-2.14.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c5ea0153482e5b4d601c25465771c7267c99fddf5d3f3bdc238ef930e6d051cf"}, - {file = "pydantic_core-2.14.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:96eb10ef8920990e703da348bb25fedb8b8653b5966e4e078e5be382b430f9e0"}, - {file = "pydantic_core-2.14.3-cp38-none-win32.whl", hash = "sha256:ea1498ce4491236d1cffa0eee9ad0968b6ecb0c1cd711699c5677fc689905f00"}, - {file = "pydantic_core-2.14.3-cp38-none-win_amd64.whl", hash = "sha256:2bc736725f9bd18a60eec0ed6ef9b06b9785454c8d0105f2be16e4d6274e63d0"}, - {file = "pydantic_core-2.14.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:1ea992659c03c3ea811d55fc0a997bec9dde863a617cc7b25cfde69ef32e55af"}, - {file = "pydantic_core-2.14.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d2b53e1f851a2b406bbb5ac58e16c4a5496038eddd856cc900278fa0da97f3fc"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c7f8e8a7cf8e81ca7d44bea4f181783630959d41b4b51d2f74bc50f348a090f"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3b9c91eeb372a64ec6686c1402afd40cc20f61a0866850f7d989b6bf39a41a"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ef3e2e407e4cad2df3c89488a761ed1f1c33f3b826a2ea9a411b0a7d1cccf1b"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f86f20a9d5bee1a6ede0f2757b917bac6908cde0f5ad9fcb3606db1e2968bcf5"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61beaa79d392d44dc19d6f11ccd824d3cccb865c4372157c40b92533f8d76dd0"}, - {file = "pydantic_core-2.14.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d41df8e10b094640a6b234851b624b76a41552f637b9fb34dc720b9fe4ef3be4"}, - {file = "pydantic_core-2.14.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c08ac60c3caa31f825b5dbac47e4875bd4954d8f559650ad9e0b225eaf8ed0c"}, - {file = "pydantic_core-2.14.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d8b3932f1a369364606417ded5412c4ffb15bedbcf797c31317e55bd5d920e"}, - {file = "pydantic_core-2.14.3-cp39-none-win32.whl", hash = "sha256:caa94726791e316f0f63049ee00dff3b34a629b0d099f3b594770f7d0d8f1f56"}, - {file = "pydantic_core-2.14.3-cp39-none-win_amd64.whl", hash = "sha256:2494d20e4c22beac30150b4be3b8339bf2a02ab5580fa6553ca274bc08681a65"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:fe272a72c7ed29f84c42fedd2d06c2f9858dc0c00dae3b34ba15d6d8ae0fbaaf"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:7e63a56eb7fdee1587d62f753ccd6d5fa24fbeea57a40d9d8beaef679a24bdd6"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7692f539a26265cece1e27e366df5b976a6db6b1f825a9e0466395b314ee48b"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af46f0b7a1342b49f208fed31f5a83b8495bb14b652f621e0a6787d2f10f24ee"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6e2f9d76c00e805d47f19c7a96a14e4135238a7551a18bfd89bb757993fd0933"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:de52ddfa6e10e892d00f747bf7135d7007302ad82e243cf16d89dd77b03b649d"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:38113856c7fad8c19be7ddd57df0c3e77b1b2336459cb03ee3903ce9d5e236ce"}, - {file = "pydantic_core-2.14.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:354db020b1f8f11207b35360b92d95725621eb92656725c849a61e4b550f4acc"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:76fc18653a5c95e5301a52d1b5afb27c9adc77175bf00f73e94f501caf0e05ad"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2646f8270f932d79ba61102a15ea19a50ae0d43b314e22b3f8f4b5fabbfa6e38"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37dad73a2f82975ed563d6a277fd9b50e5d9c79910c4aec787e2d63547202315"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:113752a55a8eaece2e4ac96bc8817f134c2c23477e477d085ba89e3aa0f4dc44"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:8488e973547e8fb1b4193fd9faf5236cf1b7cd5e9e6dc7ff6b4d9afdc4c720cb"}, - {file = "pydantic_core-2.14.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3d1dde10bd9962b1434053239b1d5490fc31a2b02d8950a5f731bc584c7a5a0f"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2c83892c7bf92b91d30faca53bb8ea21f9d7e39f0ae4008ef2c2f91116d0464a"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:849cff945284c577c5f621d2df76ca7b60f803cc8663ff01b778ad0af0e39bb9"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa89919fbd8a553cd7d03bf23d5bc5deee622e1b5db572121287f0e64979476"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf15145b1f8056d12c67255cd3ce5d317cd4450d5ee747760d8d088d85d12a2d"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4cc6bb11f4e8e5ed91d78b9880774fbc0856cb226151b0a93b549c2b26a00c19"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:832d16f248ca0cc96929139734ec32d21c67669dcf8a9f3f733c85054429c012"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b02b5e1f54c3396c48b665050464803c23c685716eb5d82a1d81bf81b5230da4"}, - {file = "pydantic_core-2.14.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:1f2d4516c32255782153e858f9a900ca6deadfb217fd3fb21bb2b60b4e04d04d"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0a3e51c2be472b7867eb0c5d025b91400c2b73a0823b89d4303a9097e2ec6655"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:df33902464410a1f1a0411a235f0a34e7e129f12cb6340daca0f9d1390f5fe10"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27828f0227b54804aac6fb077b6bb48e640b5435fdd7fbf0c274093a7b78b69c"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2979dc80246e18e348de51246d4c9b410186ffa3c50e77924bec436b1e36cb"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b28996872b48baf829ee75fa06998b607c66a4847ac838e6fd7473a6b2ab68e7"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ca55c9671bb637ce13d18ef352fd32ae7aba21b4402f300a63f1fb1fd18e0364"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:aecd5ed096b0e5d93fb0367fd8f417cef38ea30b786f2501f6c34eabd9062c38"}, - {file = "pydantic_core-2.14.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:44aaf1a07ad0824e407dafc637a852e9a44d94664293bbe7d8ee549c356c8882"}, - {file = "pydantic_core-2.14.3.tar.gz", hash = "sha256:3ad083df8fe342d4d8d00cc1d3c1a23f0dc84fce416eb301e69f1ddbbe124d3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, + {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, + {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, + {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, + {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, + {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, + {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, + {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, + {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, + {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, + {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, + {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, + {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, + {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, + {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, + {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, + {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, + {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, + {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, + {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, + {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, + {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, + {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, + {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, + {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, + {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, + {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, + {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, + {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, + {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, + {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, ] [package.dependencies] @@ -2482,17 +2469,17 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.0.3" +version = "2.1.0" description = "Settings management using Pydantic" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.0.3-py3-none-any.whl", hash = "sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625"}, - {file = "pydantic_settings-2.0.3.tar.gz", hash = "sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945"}, + {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, + {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, ] [package.dependencies] -pydantic = ">=2.0.1" +pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" [[package]] @@ -2512,74 +2499,76 @@ test = ["flake8", "isort", "pillow", "pytest"] [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyhanko" -version = "0.20.0" +version = "0.21.0" description = "Tools for stamping and signing PDF files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pyHanko-0.20.0-py3-none-any.whl", hash = "sha256:d494f4f59672b182587f0ae55b76ef4296a94bda5c1ca9c2e771e58237e130db"}, - {file = "pyHanko-0.20.0.tar.gz", hash = "sha256:2b693e20a3b06ef97dc3a375e9f99bf78db60cc3ce4bf4d05ad043f5df38d105"}, + {file = "pyHanko-0.21.0-py3-none-any.whl", hash = "sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8"}, + {file = "pyHanko-0.21.0.tar.gz", hash = "sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93"}, ] [package.dependencies] asn1crypto = ">=1.5.1" -click = ">=7.1.2" -cryptography = ">=3.3.1" -pyhanko-certvalidator = "==0.23.*" -pyyaml = ">=5.3.1" -qrcode = ">=6.1" -requests = ">=2.24.0" +click = ">=8.1.3" +cryptography = ">=41.0.5" +pyhanko-certvalidator = ">=0.26.2,<0.27" +pyyaml = ">=6.0" +qrcode = ">=7.3.1" +requests = ">=2.31.0" tzlocal = ">=4.3" [package.extras] -async-http = ["aiohttp (>=3.8.0,<3.9.0)"] +async-http = ["aiohttp (>=3.9.0,<3.10.0)"] docs = ["sphinx", "sphinx-rtd-theme"] +etsi = ["xsdata (>=23.8,<24.0)"] extra-pubkey-algs = ["oscrypto (>=1.2.1)"] image-support = ["Pillow (>=7.2.0)", "python-barcode (==0.15.1)"] -live-test = ["certomancer-csc-dummy (==0.2.2)", "certomancer[pkcs12,web-api] (>=0.11.0,<0.12.0)", "pyHanko[async-http,extra-pubkey-algs,testing-basic,xmp]", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"] -mypy = ["pyHanko[async-http,extra-pubkey-algs,image-support,opentype,pkcs11,xmp]", "types-PyYAML", "types-python-dateutil", "types-requests", "types-tzlocal"] +live-test = ["certomancer-csc-dummy (==0.2.3)", "certomancer[pkcs12,web-api] (>=0.11.0,<0.12.0)", "pyHanko[async-http,extra-pubkey-algs,testing-basic,xmp]", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"] +mypy = ["pyHanko[async-http,etsi,extra-pubkey-algs,image-support,opentype,pkcs11,xmp]", "types-PyYAML", "types-python-dateutil", "types-requests", "types-tzlocal"] opentype = ["fonttools (>=4.33.3)", "uharfbuzz (>=0.25.0,<0.38.0)"] pkcs11 = ["python-pkcs11 (>=0.7.0,<0.8.0)"] -testing = ["certomancer-csc-dummy (==0.2.2)", "pyHanko[async-http,extra-pubkey-algs,image-support,opentype,pkcs11,testing-basic,xmp]", "pytest-aiohttp (>=1.0.4,<1.1.0)"] +testing = ["certomancer-csc-dummy (==0.2.3)", "pyHanko[async-http,extra-pubkey-algs,image-support,opentype,pkcs11,testing-basic,xmp]", "pyHanko[etsi]", "pytest-aiohttp (>=1.0.4,<1.1.0)"] testing-basic = ["backports.zoneinfo[tzdata]", "certomancer (==0.11.*)", "freezegun (>=1.1.0)", "pytest (>=6.1.1)", "pytest-asyncio (==0.21.1)", "pytest-cov (>=4.0,<4.2)", "requests-mock (>=1.8.0)"] xmp = ["defusedxml (>=0.7.1,<0.8.0)"] [[package]] name = "pyhanko-certvalidator" -version = "0.23.0" +version = "0.26.3" description = "Validates X.509 certificates and paths; forked from wbond/certvalidator" optional = false python-versions = ">=3.7" files = [ - {file = "pyhanko-certvalidator-0.23.0.tar.gz", hash = "sha256:424d9070e92096ab088ae1bf5b027a0fd6adb48a3b5ff446d53b14d1dbc00338"}, - {file = "pyhanko_certvalidator-0.23.0-py3-none-any.whl", hash = "sha256:287d7c51d8ff4a1f8d9b8909f9d26f435f00d4cdd37351745b444768a668a6a5"}, + {file = "pyhanko-certvalidator-0.26.3.tar.gz", hash = "sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5"}, + {file = "pyhanko_certvalidator-0.26.3-py3-none-any.whl", hash = "sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077"}, ] [package.dependencies] asn1crypto = ">=1.5.1" -cryptography = ">=3.3.1" +cryptography = ">=41.0.5" oscrypto = ">=1.1.0" -requests = ">=2.24.0" +requests = ">=2.31.0" uritools = ">=3.0.1" [package.extras] -async-http = ["aiohttp (>=3.8.0,<3.9.0)"] +async-http = ["aiohttp (>=3.8,<3.10)"] mypy = ["pyhanko-certvalidator[testing]", "types-requests"] -testing = ["aiohttp (>=3.8.0,<3.9.0)", "freezegun (>=1.1.0)", "pyhanko-certvalidator[async-http]", "pytest (>=6.1.1)", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0.0,<4.1.0)"] +testing = ["aiohttp (>=3.8,<3.10)", "freezegun (>=1.1.0)", "pyhanko-certvalidator[async-http]", "pytest (>=6.1.1)", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"] [[package]] name = "pynacl" @@ -2637,13 +2626,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pypdf" -version = "3.17.0" +version = "4.0.1" description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" optional = false python-versions = ">=3.6" files = [ - {file = "pypdf-3.17.0-py3-none-any.whl", hash = "sha256:67f6bb7acd8fdbcf7e7a7d5319d12b8de100f5f94538d6e5647aaec3eb7c7dde"}, - {file = "pypdf-3.17.0.tar.gz", hash = "sha256:9fab275fea57c9e5b2416035d13d867a459ebe36294a4c39a3d0bb45a7404bad"}, + {file = "pypdf-4.0.1-py3-none-any.whl", hash = "sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a"}, + {file = "pypdf-4.0.1.tar.gz", hash = "sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173"}, ] [package.dependencies] @@ -2684,13 +2673,13 @@ files = [ [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.4" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] @@ -2752,17 +2741,17 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pytest-django" -version = "4.5.2" +version = "4.7.0" description = "A Django plugin for pytest." optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "pytest-django-4.5.2.tar.gz", hash = "sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2"}, - {file = "pytest_django-4.5.2-py3-none-any.whl", hash = "sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e"}, + {file = "pytest-django-4.7.0.tar.gz", hash = "sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8"}, + {file = "pytest_django-4.7.0-py3-none-any.whl", hash = "sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2"}, ] [package.dependencies] -pytest = ">=5.4.0" +pytest = ">=7.0.0" [package.extras] docs = ["sphinx", "sphinx-rtd-theme"] @@ -2818,13 +2807,13 @@ wrapt = ">=1.11.0,<2.0.0" [[package]] name = "pytest-mock" -version = "3.11.1" +version = "3.12.0" description = "Thin-wrapper around the mock package for easier use with pytest" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, - {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, + {file = "pytest-mock-3.12.0.tar.gz", hash = "sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9"}, + {file = "pytest_mock-3.12.0-py3-none-any.whl", hash = "sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f"}, ] [package.dependencies] @@ -2863,13 +2852,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -2877,13 +2866,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2023.3" +version = "2023.4" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, + {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, ] [[package]] @@ -3002,13 +2991,13 @@ files = [ [[package]] name = "referencing" -version = "0.30.2" +version = "0.33.0" description = "JSON Referencing + Python" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -3017,99 +3006,104 @@ rpds-py = ">=0.7.0" [[package]] name = "regex" -version = "2023.8.8" +version = "2023.12.25" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, - {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, - {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, - {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, - {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, - {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, - {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, - {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, - {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, - {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, - {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, - {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, - {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, - {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, - {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, - {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, - {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, - {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, - {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, - {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, - {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, - {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, - {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, - {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, - {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, - {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, - {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, - {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, - {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, - {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, - {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, - {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8"}, + {file = "regex-2023.12.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5"}, + {file = "regex-2023.12.25-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423"}, + {file = "regex-2023.12.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f"}, + {file = "regex-2023.12.25-cp310-cp310-win32.whl", hash = "sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630"}, + {file = "regex-2023.12.25-cp310-cp310-win_amd64.whl", hash = "sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97"}, + {file = "regex-2023.12.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa"}, + {file = "regex-2023.12.25-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd"}, + {file = "regex-2023.12.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4"}, + {file = "regex-2023.12.25-cp311-cp311-win32.whl", hash = "sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87"}, + {file = "regex-2023.12.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d"}, + {file = "regex-2023.12.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3"}, + {file = "regex-2023.12.25-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf"}, + {file = "regex-2023.12.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d"}, + {file = "regex-2023.12.25-cp312-cp312-win32.whl", hash = "sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5"}, + {file = "regex-2023.12.25-cp312-cp312-win_amd64.whl", hash = "sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232"}, + {file = "regex-2023.12.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f"}, + {file = "regex-2023.12.25-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347"}, + {file = "regex-2023.12.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39"}, + {file = "regex-2023.12.25-cp37-cp37m-win32.whl", hash = "sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c"}, + {file = "regex-2023.12.25-cp37-cp37m-win_amd64.whl", hash = "sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64"}, + {file = "regex-2023.12.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988"}, + {file = "regex-2023.12.25-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756"}, + {file = "regex-2023.12.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2"}, + {file = "regex-2023.12.25-cp38-cp38-win32.whl", hash = "sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb"}, + {file = "regex-2023.12.25-cp38-cp38-win_amd64.whl", hash = "sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7"}, + {file = "regex-2023.12.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6"}, + {file = "regex-2023.12.25-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f"}, + {file = "regex-2023.12.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20"}, + {file = "regex-2023.12.25-cp39-cp39-win32.whl", hash = "sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9"}, + {file = "regex-2023.12.25-cp39-cp39-win_amd64.whl", hash = "sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91"}, + {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, ] [[package]] @@ -3196,13 +3190,13 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rich" -version = "13.5.2" +version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false python-versions = ">=3.7.0" files = [ - {file = "rich-13.5.2-py3-none-any.whl", hash = "sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808"}, - {file = "rich-13.5.2.tar.gz", hash = "sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39"}, + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, ] [package.dependencies] @@ -3215,21 +3209,22 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rich-click" -version = "1.6.1" +version = "1.7.3" description = "Format click help output nicely with rich" optional = false python-versions = ">=3.7" files = [ - {file = "rich-click-1.6.1.tar.gz", hash = "sha256:f8ff96693ec6e261d1544e9f7d9a5811c5ef5d74c8adb4978430fc0dac16777e"}, - {file = "rich_click-1.6.1-py3-none-any.whl", hash = "sha256:0fcf4d1a09029d79322dd814ab0b2e66ac183633037561881d45abae8a161d95"}, + {file = "rich-click-1.7.3.tar.gz", hash = "sha256:bced1594c497dc007ab49508ff198bb437c576d01291c13a61658999066481f4"}, + {file = "rich_click-1.7.3-py3-none-any.whl", hash = "sha256:bc4163d4e2a3361e21c4d72d300eca6eb8896dfc978667923cb1d4937b8769a3"}, ] [package.dependencies] click = ">=7" rich = ">=10.7.0" +typing-extensions = "*" [package.extras] -dev = ["pre-commit"] +dev = ["flake8", "flake8-docstrings", "mypy", "packaging", "pre-commit", "pytest", "pytest-cov", "types-setuptools"] [[package]] name = "rjsmin" @@ -3314,18 +3309,18 @@ wrapt = ">=1.15.0" [[package]] name = "robotframework-debuglibrary" -version = "2.3.0" +version = "2.5.0" description = "RobotFramework debug library and an interactive shell" optional = false python-versions = "*" files = [ - {file = "robotframework-debuglibrary-2.3.0.tar.gz", hash = "sha256:2c3fb8390afc3934777657d3cf8a1674c731000035d614a21552ae96ca99fd30"}, - {file = "robotframework_debuglibrary-2.3.0-py3-none-any.whl", hash = "sha256:d33974870e8f275958ccd736a120b313dc71610018f30b69b1d816456ed666c7"}, + {file = "robotframework-debuglibrary-2.5.0.tar.gz", hash = "sha256:c8e135c7561721d36210d6f59a09b7538064367e82d8a3be67cb87088cf9cba7"}, + {file = "robotframework_debuglibrary-2.5.0-py3-none-any.whl", hash = "sha256:a2bfb2636ead7be440c224317891b4b406a9a71d84b26924031ccf3791a00b96"}, ] [package.dependencies] -prompt-toolkit = ">=2,<3" -robotframework = ">=3.0" +prompt-toolkit = ">=3" +robotframework = ">=4" [[package]] name = "robotframework-otp" @@ -3357,160 +3352,163 @@ robotframework = "*" [[package]] name = "robotframework-pythonlibcore" -version = "4.2.0" +version = "4.3.0" description = "Tools to ease creating larger test libraries for Robot Framework using Python." optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.8, <4" files = [ - {file = "robotframework-pythonlibcore-4.2.0.tar.gz", hash = "sha256:f46d8a4b21ffa15f907148173a340bff70fdbfdbd160979b8f90d686e40fb1ae"}, - {file = "robotframework_pythonlibcore-4.2.0-py2.py3-none-any.whl", hash = "sha256:163ed7780cdfe392decc00cc67d614241d25c95565c20fa0ba18c0bee35c81a4"}, + {file = "robotframework-pythonlibcore-4.3.0.tar.gz", hash = "sha256:29aacdfc19aca812e9ace14cfb8cfd8a14298ed9fbddbeceef964c2c2e84d6c6"}, + {file = "robotframework_pythonlibcore-4.3.0-py2.py3-none-any.whl", hash = "sha256:37c63c20fb296b5c202261f78c5baf91c98ee344af52f625fb975d05a16f09b1"}, ] [[package]] name = "robotframework-tidy" -version = "4.5.0" +version = "4.8.1" description = "Code autoformatter for Robot Framework" optional = false python-versions = ">=3.7" files = [ - {file = "robotframework-tidy-4.5.0.tar.gz", hash = "sha256:90f66b7956d4355421de4df7ad5de2407b0bd29ad3544149f25908a6315d71ab"}, - {file = "robotframework_tidy-4.5.0-py3-none-any.whl", hash = "sha256:cc55fbea1a9796bcd35ddba2c6b01394c5ea9dceea056ed9f7b2886b1101dcf8"}, + {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, + {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, ] [package.dependencies] click = "==8.1.*" colorama = ">=0.4.3,<0.4.7" -jinja2 = ">=3.0,<4.0" -pathspec = ">=0.9.0,<0.11.3" -rich-click = ">=1.4,<1.6.2" +jinja2 = ">=3.1.3,<4.0" +pathspec = ">=0.9.0,<0.12.2" +rich-click = ">=1.4,<1.7.4" robotframework = ">=4.0" tomli = "==2.0.*" [package.extras] -dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (>=2.4,<3.2)", "pylama", "pytest"] +dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (>=2.4,<3.3)", "pylama", "pytest", "tomli-w (==1.0.*)"] doc = ["furo", "sphinx", "sphinx-copybutton (==0.5.2)", "sphinx-design"] +generate-config = ["tomli-w (==1.0.*)"] [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.17.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, + {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, + {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, + {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, + {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, + {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, + {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, + {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, + {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, + {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, + {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, + {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, + {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, + {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, + {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, + {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, + {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, + {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, + {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, + {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, + {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, + {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, + {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, + {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, + {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, + {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, + {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, + {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, + {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, + {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, ] [[package]] name = "setuptools" -version = "68.1.2" +version = "69.0.3" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, - {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, + {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, + {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -3536,13 +3534,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] @@ -3624,13 +3622,13 @@ files = [ [[package]] name = "toolz" -version = "0.12.0" +version = "0.12.1" description = "List processing tools and functional utilities" optional = false -python-versions = ">=3.5" +python-versions = ">=3.7" files = [ - {file = "toolz-0.12.0-py3-none-any.whl", hash = "sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f"}, - {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, ] [[package]] @@ -3676,35 +3674,35 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "tzdata" -version = "2023.3" +version = "2023.4" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, - {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, + {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, + {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, ] [[package]] name = "tzlocal" -version = "5.0.1" +version = "5.2" description = "tzinfo object for the local timezone" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tzlocal-5.0.1-py3-none-any.whl", hash = "sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f"}, - {file = "tzlocal-5.0.1.tar.gz", hash = "sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803"}, + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, ] [package.dependencies] @@ -3712,33 +3710,32 @@ files = [ tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "uritools" -version = "4.0.1" +version = "4.0.2" description = "URI parsing, classification and composition" optional = false -python-versions = "~=3.7" +python-versions = ">=3.7" files = [ - {file = "uritools-4.0.1-py3-none-any.whl", hash = "sha256:d122d394ed6e6e15ac0fddba6a5b19e9fa204e7797507815cbfb0e1455ac0475"}, - {file = "uritools-4.0.1.tar.gz", hash = "sha256:efc5c3a6de05404850685a8d3f34da8476b56aa3516fbf8eff5c8704c7a2826f"}, + {file = "uritools-4.0.2-py3-none-any.whl", hash = "sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e"}, + {file = "uritools-4.0.2.tar.gz", hash = "sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573"}, ] [[package]] name = "urllib3" -version = "2.0.7" +version = "2.1.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, - {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, + {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, + {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -3880,24 +3877,24 @@ anyio = ">=3.0.0" [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] name = "weasyprint" -version = "60.1" +version = "60.2" description = "The Awesome Document Factory" optional = false python-versions = ">=3.7" files = [ - {file = "weasyprint-60.1-py3-none-any.whl", hash = "sha256:55227e5e44f5f34bc9cec651329bd38d063ef7d29151d4b058d4af1ca943d4a7"}, - {file = "weasyprint-60.1.tar.gz", hash = "sha256:56b9812280118357b0f63b1efe18199e08343d4a56a3393c1d475ab878cea26a"}, + {file = "weasyprint-60.2-py3-none-any.whl", hash = "sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705"}, + {file = "weasyprint-60.2.tar.gz", hash = "sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126"}, ] [package.dependencies] @@ -3941,13 +3938,13 @@ test = ["pytest (>=6.0.0)"] [[package]] name = "whitenoise" -version = "6.5.0" +version = "6.6.0" description = "Radically simplified static file serving for WSGI applications" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "whitenoise-6.5.0-py3-none-any.whl", hash = "sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec"}, - {file = "whitenoise-6.5.0.tar.gz", hash = "sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8"}, + {file = "whitenoise-6.6.0-py3-none-any.whl", hash = "sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146"}, + {file = "whitenoise-6.6.0.tar.gz", hash = "sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251"}, ] [package.dependencies] @@ -3958,86 +3955,81 @@ brotli = ["Brotli"] [[package]] name = "wrapt" -version = "1.15.0" +version = "1.16.0" description = "Module for decorators, wrappers and monkey patching." optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, - {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, - {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, - {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, - {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, - {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, - {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, - {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, - {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, - {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, - {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, - {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, - {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, - {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, - {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, - {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, - {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, - {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, - {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, - {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, - {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, - {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, - {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, - {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, - {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, - {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, - {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, - {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, - {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, - {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, - {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, - {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, - {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, - {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, - {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, - {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, - {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, - {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, +python-versions = ">=3.6" +files = [ + {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, + {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, + {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, + {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, + {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, + {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, + {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, + {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, + {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, + {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, + {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, + {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, + {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, + {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, + {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, + {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, + {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, + {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, + {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, + {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, + {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, + {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, + {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, + {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, + {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, + {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, + {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, + {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, + {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, + {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, + {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, + {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, + {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, + {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, + {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, + {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, + {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] [[package]] @@ -4063,17 +4055,17 @@ svglib = ">=1.2.1" [[package]] name = "zipp" -version = "3.16.2" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, - {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] @@ -4152,4 +4144,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "7261fbe366b2b0bdb2ddae203ddf23d26bf241875cc2f277ccf97dd07bfb1468" +content-hash = "f9396d2420149e5bcd125638efd73fe2dcedffdbc3b9faffae6c59466412d5d0" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index fcaf806f438..bea6d7afb50 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -18,7 +18,7 @@ django-formtools = "^2.4.1" django-otp = "^1.1.3" django-phonenumber-field = "^6.1.0" django-two-factor-auth = "^1.14.0" -django-environ = "^0.10.0" +django-environ = "^0.11.2" idna = "^3.4" jsonschema = "^4.17.0" lxml = "^4.9.2" @@ -60,7 +60,7 @@ opentelemetry-instrumentation-requests = "^0.41b0" whitenoise = {extras = ["brotli"], version = "^6.5.0"} opentelemetry-instrumentation = "^0.41b0" opentelemetry-instrumentation-fastapi = "^0.41b0" -granian = "^0.7.0" +granian = "^1.0.2" pydantic-settings = "^2.0.3" @@ -72,7 +72,6 @@ robotframework-tidy = "^4.1.0" wheel = "^0.40.0" PyNaCl = "^1.5.0" Image = "^1.5.33" -numpy = "^1.24.0" pyotp = "^2.8.0" robotframework = "^6.1" robotframework-browser = "^16.2.0" diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index 181e315e578..60452262777 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -1,9 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ - --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f arabic-reshaper==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 @@ -15,9 +15,9 @@ asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ asn1crypto==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 -attrs==23.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 +attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 @@ -41,9 +41,9 @@ backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da \ - --hash=sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a +beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ + --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208 \ --hash=sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48 \ @@ -156,238 +156,250 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ - --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 -cffi==1.15.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 +certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ + --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ + --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ + --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ + --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \ + --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \ + --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \ + --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \ + --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \ + --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \ + --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \ + --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \ + --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \ + --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \ + --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \ + --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \ + --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \ + --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \ + --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \ + --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \ + --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \ + --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \ + --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \ + --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \ + --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \ + --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \ + --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \ + --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \ + --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \ + --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \ + --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \ + --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \ + --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \ + --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \ + --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \ + --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \ + --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \ + --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \ + --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \ + --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \ + --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \ + --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \ + --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \ + --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \ + --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \ + --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \ + --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \ + --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \ + --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \ + --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \ + --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ + --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ + --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34 \ - --hash=sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e \ - --hash=sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7 \ - --hash=sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b \ - --hash=sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3 \ - --hash=sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985 \ - --hash=sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95 \ - --hash=sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2 \ - --hash=sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a \ - --hash=sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74 \ - --hash=sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd \ - --hash=sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af \ - --hash=sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54 \ - --hash=sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865 \ - --hash=sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214 \ - --hash=sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54 \ - --hash=sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe \ - --hash=sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0 \ - --hash=sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321 \ - --hash=sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446 \ - --hash=sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e \ - --hash=sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527 \ - --hash=sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12 \ - --hash=sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f \ - --hash=sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f \ - --hash=sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84 \ - --hash=sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479 \ - --hash=sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e \ - --hash=sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873 \ - --hash=sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70 \ - --hash=sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0 \ - --hash=sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977 \ - --hash=sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51 \ - --hash=sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28 \ - --hash=sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1 \ - --hash=sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254 \ - --hash=sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1 \ - --hash=sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd \ - --hash=sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689 \ - --hash=sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d \ - --hash=sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543 \ - --hash=sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9 \ - --hash=sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637 \ - --hash=sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071 \ - --hash=sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482 \ - --hash=sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1 \ - --hash=sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b \ - --hash=sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5 \ - --hash=sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a \ - --hash=sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393 \ - --hash=sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a \ - --hash=sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba -cryptography==41.0.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \ - --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \ - --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \ - --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \ - --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \ - --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \ - --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \ - --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \ - --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \ - --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \ - --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \ - --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \ - --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \ - --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \ - --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \ - --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \ - --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \ - --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \ - --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \ - --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \ - --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \ - --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \ - --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae -cssbeautifier==1.14.9 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2da432472f68170eb854aff97b16a24721f5090ee36af2e31199590a89e7f71f +coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ + --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ + --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ + --hash=sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7 \ + --hash=sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75 \ + --hash=sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd \ + --hash=sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35 \ + --hash=sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04 \ + --hash=sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6 \ + --hash=sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042 \ + --hash=sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166 \ + --hash=sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1 \ + --hash=sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d \ + --hash=sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c \ + --hash=sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66 \ + --hash=sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70 \ + --hash=sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1 \ + --hash=sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676 \ + --hash=sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630 \ + --hash=sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a \ + --hash=sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74 \ + --hash=sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad \ + --hash=sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19 \ + --hash=sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6 \ + --hash=sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448 \ + --hash=sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018 \ + --hash=sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218 \ + --hash=sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756 \ + --hash=sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54 \ + --hash=sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45 \ + --hash=sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628 \ + --hash=sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968 \ + --hash=sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d \ + --hash=sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25 \ + --hash=sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60 \ + --hash=sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950 \ + --hash=sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06 \ + --hash=sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295 \ + --hash=sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b \ + --hash=sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c \ + --hash=sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc \ + --hash=sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74 \ + --hash=sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1 \ + --hash=sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee \ + --hash=sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011 \ + --hash=sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156 \ + --hash=sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766 \ + --hash=sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5 \ + --hash=sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581 \ + --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ + --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ + --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cssbeautifier==1.14.11 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:40544c2b62bbcb64caa5e7f37a02df95654e5ce1bcacadac4ca1f3dc89c31513 cssselect2==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 @@ -398,25 +410,25 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 django-admin-auto-tests @ git+https://github.com/dekkers/django-admin-auto-tests@f6eb4cbb9112b5aa933313d79e4da823adb41e1e ; python_version >= "3.8" and python_version < "4.0" -django-appconf==1.0.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:ae9f864ee1958c815a965ed63b3fba4874eec13de10236ba063a788f9a17389d \ - --hash=sha256:be3db0be6c81fa84742000b89a81c016d70ae66a7ccb620cdef592b1f1a6aaa4 +django-appconf==1.0.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993 \ + --hash=sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.8" and python_version < "4.0" django-csp==3.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a \ --hash=sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727 -django-environ==0.10.0 ; python_version >= "3.8" and python_version < "4" \ - --hash=sha256:510f8c9c1d0a38b0815f91504270c29440a0cf44fab07f55942fa8d31bbb9be6 \ - --hash=sha256:b3559a91439c9d774a9e0c1ced872364772c612cdf6dc919506a2b13f7a77225 -django-formtools==2.4.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:21f8d5dac737f1e636fa8a0a10969c1c32f525a6dfa27c29592827ba70d9643a \ - --hash=sha256:49ea8a64ddef4728a558bf5f8f622c0f4053b979edcf193bf00dd80432ab2f12 -django-otp==1.2.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:007a6354dabb3a1a54574bf73abf045ebbde0bb8734a38e2ed7845ba450f345e \ - --hash=sha256:90765d5dac238a719f9550ac05681dd6307f513a81a10b6adb879b4abc6bc1a3 -django-password-validators==1.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:16ee1d32d2ee9c0852f0c77f6e004fc115f58150d48cdca7d23ea269b22d0f30 \ - --hash=sha256:5f5fffb7d69ec3d9a81d41b159a8089e7f734b4715f93dd1814edd6e11a21796 +django-environ==0.11.2 ; python_version >= "3.8" and python_version < "4" \ + --hash=sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05 \ + --hash=sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be +django-formtools==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93 \ + --hash=sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a +django-otp==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060 \ + --hash=sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c +django-password-validators==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7175aefa6e86dc002dd3539327bf2d752097651704927dc409a669259e0d2195 \ + --hash=sha256:f243a82957e9b17a0c7cf5580f9d7588471cb6530c2dce7ee4e1222dddfe5768 django-phonenumber-field==6.4.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:72a3e7a3e7493bf2a12c07a3bc77ce89813acc16592bf04d0eee3b5a452097ed \ --hash=sha256:a31b4f05ac0ff898661516c84940f83adb5cdcf0ae4b9b1d31bb8ad3ff345b58 @@ -424,141 +436,143 @@ django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc django-tagulous==1.3.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:4570ffa774bbced191f670079fea4e72a350ee91b2a937d5eb08e535ca47f1a6 \ - --hash=sha256:6be4313069bffcaef8b657573ddc82f82e77da1a0bdb31175b1649c2411c0b0a +django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ + --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41 \ - --hash=sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9 +django==4.2.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14 \ + --hash=sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984 djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -djlint==1.32.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8aaec6776376cfd41f3e742ed9f5e3c46dc7c6cd7646abf9e99860fb1ec9f19a \ - --hash=sha256:c1e2141acf1547d244af7ef8abd15fbbae2abcc7a03e2bf31f8a491de69a6c72 -dnspython==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8 \ - --hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984 -drf-standardized-errors==0.12.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20db40c4f4288c36046ee6e0e3727539fbe3306d60f6f1aa88326629022f69c4 \ - --hash=sha256:46eda8c7442730a7d0069f6213ea588e5c386dc2858a14b9a3ae08e78fd8975d +djlint==1.34.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8 \ + --hash=sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346 +dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ + --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 +drf-standardized-errors==0.12.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ + --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d editorconfig==0.12.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e \ --hash=sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1 -exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9 \ - --hash=sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3 +exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ + --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ + --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==19.3.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a6624d9574623bb27dfca33fff94581cd7b23b562901db8ad59acbde9a52543e \ - --hash=sha256:e2722fdf622cf24e974aaba15a3dee97a6f8b98d869bd827ff1af9c87695af46 -fonttools[woff]==4.46.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:13ac0cba2fc63fa4b232f2a7971f35f35c6eaf10bd1271fa96d4ce6253a8acfd \ - --hash=sha256:156ae342a1ed1fe38e180de471e98fbf5b2b6ae280fa3323138569c4ca215844 \ - --hash=sha256:1a9f9cdd7ef63d1b8ac90db335762451452426b3207abd79f60da510cea62da5 \ - --hash=sha256:1c9937c4dd1061afd22643389445fabda858af5e805860ec3082a4bc07c7a720 \ - --hash=sha256:25852f0c63df0af022f698464a4a80f7d1d5bd974bcd22f995f6b4ad198e32dd \ - --hash=sha256:2ae45716c27a41807d58a9f3f59983bdc8c0a46cb259e4450ab7e196253a9853 \ - --hash=sha256:2c23c59d321d62588620f2255cf951270bf637d88070f38ed8b5e5558775b86c \ - --hash=sha256:2cf923a4a556ab4cc4c52f69a4a2db624cf5a2cf360394368b40c5152fe3321e \ - --hash=sha256:2d0eba685938c603f2f648dfc0aadbf8c6a4fe1c7ca608c2970a6ef39e00f254 \ - --hash=sha256:3033b55f401a622de2630b3982234d97219d89b058607b87927eccb0f922313c \ - --hash=sha256:49ea0983e55fd7586a809787cd4644a7ae471e53ab8ddc016f9093b400e32646 \ - --hash=sha256:5200b01f463d97cc2b7ff8a1e3584151f4413e98cb8419da5f17d1dbb84cc214 \ - --hash=sha256:5b627ed142398ea9202bd752c04311592558964d1a765fb2f78dc441a05633f4 \ - --hash=sha256:6d4a4ebcc76e30898ff3296ea786491c70e183f738319ae2629e0d44f17ece42 \ - --hash=sha256:795150d5edc595e1a2cfb3d65e8f4f3d027704fc2579f8990d381bef6b188eb6 \ - --hash=sha256:7b460720ce81773da1a3e7cc964c48e1e11942b280619582a897fa0117b56a62 \ - --hash=sha256:7b5636f5706d49f13b6d610fe54ee662336cdf56b5a6f6683c0b803e23d826d2 \ - --hash=sha256:8485cc468288e213f31afdaf1fdda3c79010f542559fbba936a54f4644df2570 \ - --hash=sha256:87c214197712cc14fd2a4621efce2a9c501a77041232b789568149a8a3161517 \ - --hash=sha256:87c3299da7da55394fb324349db0ede38114a46aafd0e7dfcabfecd28cdd94c3 \ - --hash=sha256:89c2c520f9492844ecd6316d20c6c7a157b5c0cb73a1411b3db28ee304f30122 \ - --hash=sha256:8be6adfa4e15977075278dd0a0bae74dec59be7b969b5ceed93fb86af52aa5be \ - --hash=sha256:8bee9f4fc8c99824a424ae45c789ee8c67cb84f8e747afa7f83b7d3cef439c3b \ - --hash=sha256:982f69855ac258260f51048d9e0c53c5f19881138cc7ca06deb38dc4b97404b6 \ - --hash=sha256:9e6aeb5c340416d11a3209d75c48d13e72deea9e1517837dd1522c1fd1f17c11 \ - --hash=sha256:a0e94244ec24a940ecfbe5b31c975c8a575d5ed2d80f9a280ce3b21fa5dc9c34 \ - --hash=sha256:a4a50a1dfad7f7ba5ca3f99cc73bf5cdac67ceade8e4b355a877521f20ad1b63 \ - --hash=sha256:a9fa52ef8fd14d7eb3d813e1451e7ace3e1eebfa9b7237d3f81fee8f3de6a114 \ - --hash=sha256:adab73618d0a328b203a0e242b3eba60a2b5662d9cb2bd16ed9c52af8a7d86af \ - --hash=sha256:c506e3d3a9e898caee4dc094f34b49c5566870d5a2d1ca2125f0a9f35ecc2205 \ - --hash=sha256:c779f8701deedf41908f287aeb775b8a6f59875ad1002b98ac6034ae4ddc1b7b \ - --hash=sha256:c94564b1f3b5dd87e73577610d85115b1936edcc596deaf84a31bbe70e17456b \ - --hash=sha256:c9a0e422ab79e5cb2b47913be6a4b5fd20c4c7ac34a24f3691a4e099e965e0b8 \ - --hash=sha256:ca9eceebe70035b057ce549e2054cad73e95cac3fe91a9d827253d1c14618204 \ - --hash=sha256:ce199227ce7921eaafdd4f96536f16b232d6b580ce74ce337de544bf06cb2752 \ - --hash=sha256:d00fc63131dcac6b25f50a5a129758438317e54e3ce5587163f7058de4b0e933 \ - --hash=sha256:d3d7b96aba96e05e8c911ce2dfc5acc6a178b8f44f6aa69371ab91aa587563da \ - --hash=sha256:d4e69e2c7f93b695d2e6f18f709d501d945f65c1d237dafaabdd23cd935a5276 \ - --hash=sha256:e26e7fb908ae4f622813e7cb32cd2db6c24e3122bb3b98f25e832a2fe0e7e228 \ - --hash=sha256:e5b7905fd68eacb7cc56a13139da5c312c45baae6950dd00b02563c54508a041 \ - --hash=sha256:f5f1423a504ccc329efb5aa79738de83d38c072be5308788dde6bd419969d7f5 \ - --hash=sha256:f8bc3973ed58893c4107993e0a7ae34901cb572b5e798249cbef35d30801ffd4 -googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918 \ - --hash=sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708 -granian==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00b20f2e9bb634acc2d886d5cf80efa2151648bbccbf0096a719bb8daa460fb0 \ - --hash=sha256:01f9fcd0b1a3126f59a5205ddb0688b91cf9c4ce9511cb3bee3bd2b8e9404638 \ - --hash=sha256:0338b371b9d894500fd83ec5d1d2f33ef775084bf5d28f5fecd25e092375b0a7 \ - --hash=sha256:0c54219c9929bcda408386d60983d7fb8dae14e4e7fb802e3fc0ce92a99bb472 \ - --hash=sha256:172de2f6c4bb231e560c8679a8ecd56995cb8554f3ab3e9f600a5c2aebb27917 \ - --hash=sha256:1cb392572df79f75775be0298d2aa62c8a573c49261b56bc012e29a052c1b4d2 \ - --hash=sha256:1e8129b1e1bbdcfa407d07ee861a3d201a5b916e0f0bcba7c7aaa22c0b17488d \ - --hash=sha256:1fa1412ac05ab8bfa1000cfea15fa04aaeaa81ac03d41c4142a021b0c0ec21b4 \ - --hash=sha256:27710fdc406dcada02c0b52f0d6375bfbb1f4b198b23d5000d4925e756751a01 \ - --hash=sha256:293e3a406506c04741c1055b49f892aec5677ca060318b34360ea977087c8196 \ - --hash=sha256:2a1075fe58ab638def736dd4a6edacb2a3c042bbf8dbfdaec7584aa7bcffc01c \ - --hash=sha256:336364e7d4fca955eb2dc7b0a24fcc7c32ce3b80f496d3c97191015d22d62c11 \ - --hash=sha256:369e4aaed10996aca4cb5fdd98b3339a6b6d2e7389a079aecd8acafe954f5b24 \ - --hash=sha256:374443b4fcc7dad1d420fdf298a43858ca0cbec9a0d0048696abb9c043a7b0ae \ - --hash=sha256:3813e900aca1d62091254b7c9340eb33d74c6b133b32efd70834a48265111f03 \ - --hash=sha256:3ce74ec097dd92dd01632211b6a656db56683afb862f02a267b69fc09f702339 \ - --hash=sha256:4d8b18149d63a5a92d3cffb8bee115d3a59137cafaeb962b7e45e984f43b5c0d \ - --hash=sha256:50349d6ab546d7cbe88c34e08c1e16cae5ac70f48e08b2b9a237f30709f35bf8 \ - --hash=sha256:578ca2cb2117c96836e0b2573ffd345f358b8da0647ef29893eaf837840e2a5d \ - --hash=sha256:57fb2036a199037373bfef7bebf3452ca147501b1d57581853874bce61a72eb7 \ - --hash=sha256:5d76198b6d876732f2389d4eed83e33b00c8bf40380d0963d26a6ccb8918606a \ - --hash=sha256:6949c7594798d201baa62e9eccb4c7662c75ed87dbbb28bed585c5078e82a882 \ - --hash=sha256:6a092ba050e9f593384aa0c200d7c57a249ae5a3bbf89a788bb1ac9147320584 \ - --hash=sha256:6e54d153616cc3be59306cde6a4e55fcc07e45403f309a5c5fe8681e85069814 \ - --hash=sha256:7237071088cbaa8fff88f025062885019f30d5465a11f60d5172c17e44a93e4f \ - --hash=sha256:815d5833549957e68d7d429453c58575aa80440795a6fb1accbc0c46d6a32b3e \ - --hash=sha256:828ac7d024f5ada284d2c815a74c07f26bde2856b613b673d992b6da2ba50245 \ - --hash=sha256:9efc78ada79079d0ce2f6e61abb71528671572a858d44a2b85268346795cf3a7 \ - --hash=sha256:a21c117d4bd78055ba253a53ce7bef0c539b6a042731289f3fb78b1e2377bcea \ - --hash=sha256:a3173482ce292a31f19d7497941401a648fb727a5ffaa2d979ea8866ccacd7a3 \ - --hash=sha256:a52d665e5eb160d66d1c0ab001180e5dd1b386d687c6c03981038c9e21d42a61 \ - --hash=sha256:a912e5bcc144c25299e22713bcf4faafa6a0af2a81b8702ba88fa5f5646dedc2 \ - --hash=sha256:be03ab8dddd7acffcb6e758081973e6bd517b7eb4d3f83046220e55e26bff02a \ - --hash=sha256:c3e0a1975f3a51659233b7d6671f6718477fbfc8208f9051a28617af9ea655c3 \ - --hash=sha256:c6c0e0c0e3dd1bffd61a14f2ab13e5c4798d4802fb2253893eb9a98713dfb3d9 \ - --hash=sha256:cbc7ad1ecdd2f71c3a9bfe8e04d6e2b466d1f32388a323468526aae420cd0e93 \ - --hash=sha256:cced24e44041a8e0e07265a9a1f3227ef64171716b6204770c6e3e1e0842becf \ - --hash=sha256:ce968248ca1b8b66ae12440e9283b5a65b58264b3c5a3b3a6d90035e186e964f \ - --hash=sha256:cf014963ec58482a16bf95d1ddd86216a2c1f7208f7bf00ff3ecc8804f0d9750 \ - --hash=sha256:cf6b6d5ed34bf6d9018949c51bcf829c0b11ef25c90b90f6d28330e3dfeaa1b9 \ - --hash=sha256:d1cffd1bba4dc3e29278d42ed7c6237229c293d12c3e346dd14bed89de9b4dc2 \ - --hash=sha256:d476c10452ccd27e09b4fdbe24f92d6d1cd78f2acd4da98ca6d1606bff08f18a \ - --hash=sha256:d89690242217879ddb5635ed340bd67877026dca68d995382ed37c90a14ca2f0 \ - --hash=sha256:d938e81cd59d0de89654ad0a081a44c2858e05afac5f9266fd2cc85f4f0735f9 \ - --hash=sha256:db818af6305f941ea516bb73aa703d61a57f83affa47b5d530ff6f19c7d97983 \ - --hash=sha256:e3b30894a5c8e21d41dc1eba052b6cf569fb5dbf27988bc68bf5384c845bf147 \ - --hash=sha256:e5414dc976266b482330ecafcf94656d9042b6d0f33f030c7dd30a976faa3fd9 \ - --hash=sha256:e588864e6bd3479a28c96536b200e257932074f5326b2f67f535091767402993 \ - --hash=sha256:e8e60d57cf3bad9cc84a75d0b6c9ca5e97f5b571a4c47705c5390f13ac98e783 \ - --hash=sha256:e9ff2a0b113dee5dd01636ebf409e215141bd3449c7522011c9688479a40a6f7 \ - --hash=sha256:ea9c05dd7190cd6105abb7b4b2bc6dc5bd13daa3827c463cc887ef0c83b6280e \ - --hash=sha256:ef34bd268566dc4cae942fe30651461005526635c24df42f9600b2a199dff39c \ - --hash=sha256:f80e1722c657fd5a7054ada83e0cd98aeb5d59a0b796a92027c9587cace0e1c3 \ - --hash=sha256:fdc6c4417460efba6ea7e4563371d43e49f336655c295e0b9b4e5daef5f63db0 \ - --hash=sha256:ff196a3d5e6c8d18f12d0115bbfcb2f7312ab0681672cdc00ab14c5cb1a47464 +faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ + --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 +fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ + --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ + --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ + --hash=sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae \ + --hash=sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b \ + --hash=sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc \ + --hash=sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b \ + --hash=sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07 \ + --hash=sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70 \ + --hash=sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71 \ + --hash=sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df \ + --hash=sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6 \ + --hash=sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1 \ + --hash=sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670 \ + --hash=sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7 \ + --hash=sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6 \ + --hash=sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635 \ + --hash=sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899 \ + --hash=sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50 \ + --hash=sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9 \ + --hash=sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085 \ + --hash=sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb \ + --hash=sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c \ + --hash=sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3 \ + --hash=sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184 \ + --hash=sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8 \ + --hash=sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506 \ + --hash=sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c \ + --hash=sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c \ + --hash=sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b \ + --hash=sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0 \ + --hash=sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c \ + --hash=sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa \ + --hash=sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f \ + --hash=sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4 \ + --hash=sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c \ + --hash=sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1 \ + --hash=sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946 \ + --hash=sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d \ + --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ + --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ + --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 +googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ + --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 +granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ + --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ + --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ + --hash=sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3 \ + --hash=sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056 \ + --hash=sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce \ + --hash=sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032 \ + --hash=sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde \ + --hash=sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81 \ + --hash=sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149 \ + --hash=sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa \ + --hash=sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020 \ + --hash=sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3 \ + --hash=sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7 \ + --hash=sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815 \ + --hash=sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720 \ + --hash=sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2 \ + --hash=sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a \ + --hash=sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9 \ + --hash=sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf \ + --hash=sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b \ + --hash=sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810 \ + --hash=sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7 \ + --hash=sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82 \ + --hash=sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43 \ + --hash=sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12 \ + --hash=sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926 \ + --hash=sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5 \ + --hash=sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb \ + --hash=sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897 \ + --hash=sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f \ + --hash=sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5 \ + --hash=sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb \ + --hash=sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f \ + --hash=sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1 \ + --hash=sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711 \ + --hash=sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803 \ + --hash=sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208 \ + --hash=sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df \ + --hash=sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc \ + --hash=sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386 \ + --hash=sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed \ + --hash=sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9 \ + --hash=sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c \ + --hash=sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f \ + --hash=sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8 \ + --hash=sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d \ + --hash=sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879 \ + --hash=sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe \ + --hash=sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664 \ + --hash=sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a \ + --hash=sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167 \ + --hash=sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4 \ + --hash=sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda \ + --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ + --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ + --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 grpcio-tools==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:02b23a12b91287ebea14b3685735d1d675e77c3cd365ec1771c3e9afbeba1ec6 \ --hash=sha256:0a8767e4de0f573c678313c5de075ac0e163a192bb135018e45015a22f234387 \ @@ -660,17 +674,17 @@ html-void-elements==0.1.0 ; python_version >= "3.8" and python_version < "4.0" \ html5lib==1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f -idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 +idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ + --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f image==1.5.33 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:baa2e09178277daa50f22fd6d1d51ec78f19c12688921cb9ab5808743f097126 -importlib-metadata==6.8.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ - --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 -importlib-resources==6.0.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf \ - --hash=sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4 +importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ + --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b +importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ + --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 inflection==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ @@ -679,236 +693,219 @@ iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -jsbeautifier==1.14.9 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c738ebc36b47bd94e4ca6dd17a9004c3cc74edad582ca1d60e0e5d5945a63cb9 +jsbeautifier==1.14.11 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6b632581ea60dd1c133cd25a48ad187b4b91f526623c4b0fb5443ef805250505 json5==0.9.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f \ --hash=sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02 -jsonschema-specifications==2023.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1 \ - --hash=sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb -jsonschema==4.19.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb \ - --hash=sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f -lazy-object-proxy==1.9.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382 \ - --hash=sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82 \ - --hash=sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9 \ - --hash=sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494 \ - --hash=sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46 \ - --hash=sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30 \ - --hash=sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63 \ - --hash=sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4 \ - --hash=sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae \ - --hash=sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be \ - --hash=sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701 \ - --hash=sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd \ - --hash=sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006 \ - --hash=sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a \ - --hash=sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586 \ - --hash=sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8 \ - --hash=sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821 \ - --hash=sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07 \ - --hash=sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b \ - --hash=sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171 \ - --hash=sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b \ - --hash=sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2 \ - --hash=sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7 \ - --hash=sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4 \ - --hash=sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8 \ - --hash=sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e \ - --hash=sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f \ - --hash=sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda \ - --hash=sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4 \ - --hash=sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e \ - --hash=sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671 \ - --hash=sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11 \ - --hash=sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455 \ - --hash=sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734 \ - --hash=sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb \ - --hash=sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59 -lxml==4.9.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3 \ - --hash=sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d \ - --hash=sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a \ - --hash=sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120 \ - --hash=sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305 \ - --hash=sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287 \ - --hash=sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23 \ - --hash=sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52 \ - --hash=sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f \ - --hash=sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4 \ - --hash=sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584 \ - --hash=sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f \ - --hash=sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693 \ - --hash=sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef \ - --hash=sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5 \ - --hash=sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02 \ - --hash=sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc \ - --hash=sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7 \ - --hash=sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da \ - --hash=sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a \ - --hash=sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40 \ - --hash=sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8 \ - --hash=sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd \ - --hash=sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601 \ - --hash=sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c \ - --hash=sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be \ - --hash=sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2 \ - --hash=sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c \ - --hash=sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129 \ - --hash=sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc \ - --hash=sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2 \ - --hash=sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1 \ - --hash=sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7 \ - --hash=sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d \ - --hash=sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477 \ - --hash=sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d \ - --hash=sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e \ - --hash=sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7 \ - --hash=sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2 \ - --hash=sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574 \ - --hash=sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf \ - --hash=sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b \ - --hash=sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98 \ - --hash=sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12 \ - --hash=sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42 \ - --hash=sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35 \ - --hash=sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d \ - --hash=sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce \ - --hash=sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d \ - --hash=sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f \ - --hash=sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db \ - --hash=sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4 \ - --hash=sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694 \ - --hash=sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac \ - --hash=sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2 \ - --hash=sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7 \ - --hash=sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96 \ - --hash=sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d \ - --hash=sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b \ - --hash=sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a \ - --hash=sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13 \ - --hash=sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340 \ - --hash=sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6 \ - --hash=sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458 \ - --hash=sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c \ - --hash=sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c \ - --hash=sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9 \ - --hash=sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432 \ - --hash=sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991 \ - --hash=sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69 \ - --hash=sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf \ - --hash=sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb \ - --hash=sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b \ - --hash=sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833 \ - --hash=sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76 \ - --hash=sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85 \ - --hash=sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e \ - --hash=sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50 \ - --hash=sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8 \ - --hash=sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4 \ - --hash=sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b \ - --hash=sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5 \ - --hash=sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190 \ - --hash=sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7 \ - --hash=sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa \ - --hash=sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0 \ - --hash=sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9 \ - --hash=sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0 \ - --hash=sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b \ - --hash=sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5 \ - --hash=sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7 \ - --hash=sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4 +jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 +lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56 \ + --hash=sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4 \ + --hash=sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8 \ + --hash=sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282 \ + --hash=sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757 \ + --hash=sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424 \ + --hash=sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b \ + --hash=sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255 \ + --hash=sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70 \ + --hash=sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94 \ + --hash=sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074 \ + --hash=sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c \ + --hash=sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee \ + --hash=sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9 \ + --hash=sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9 \ + --hash=sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69 \ + --hash=sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f \ + --hash=sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3 \ + --hash=sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9 \ + --hash=sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d \ + --hash=sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977 \ + --hash=sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b \ + --hash=sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43 \ + --hash=sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658 \ + --hash=sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a \ + --hash=sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd \ + --hash=sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83 \ + --hash=sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4 \ + --hash=sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696 \ + --hash=sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05 \ + --hash=sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3 \ + --hash=sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6 \ + --hash=sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895 \ + --hash=sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4 \ + --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ + --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ + --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c +lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ + --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ + --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ + --hash=sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5 \ + --hash=sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545 \ + --hash=sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2 \ + --hash=sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd \ + --hash=sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a \ + --hash=sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771 \ + --hash=sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba \ + --hash=sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20 \ + --hash=sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b \ + --hash=sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac \ + --hash=sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7 \ + --hash=sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be \ + --hash=sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28 \ + --hash=sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9 \ + --hash=sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622 \ + --hash=sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43 \ + --hash=sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197 \ + --hash=sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20 \ + --hash=sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2 \ + --hash=sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97 \ + --hash=sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48 \ + --hash=sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d \ + --hash=sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d \ + --hash=sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7 \ + --hash=sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d \ + --hash=sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca \ + --hash=sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc \ + --hash=sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4 \ + --hash=sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225 \ + --hash=sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663 \ + --hash=sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2 \ + --hash=sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590 \ + --hash=sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c \ + --hash=sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46 \ + --hash=sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58 \ + --hash=sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16 \ + --hash=sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013 \ + --hash=sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c \ + --hash=sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02 \ + --hash=sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec \ + --hash=sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3 \ + --hash=sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573 \ + --hash=sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899 \ + --hash=sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10 \ + --hash=sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2 \ + --hash=sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a \ + --hash=sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37 \ + --hash=sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5 \ + --hash=sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745 \ + --hash=sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9 \ + --hash=sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7 \ + --hash=sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868 \ + --hash=sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c \ + --hash=sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b \ + --hash=sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45 \ + --hash=sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd \ + --hash=sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644 \ + --hash=sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4 \ + --hash=sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e \ + --hash=sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192 \ + --hash=sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be \ + --hash=sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab \ + --hash=sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d \ + --hash=sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85 \ + --hash=sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9 \ + --hash=sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307 \ + --hash=sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd \ + --hash=sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e \ + --hash=sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8 \ + --hash=sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964 \ + --hash=sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69 \ + --hash=sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683 \ + --hash=sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5 \ + --hash=sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979 \ + --hash=sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8 \ + --hash=sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e \ + --hash=sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53 \ + --hash=sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7 \ + --hash=sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722 \ + --hash=sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d \ + --hash=sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66 \ + --hash=sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1 \ + --hash=sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137 \ + --hash=sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56 \ + --hash=sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a \ + --hash=sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0 \ + --hash=sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23 \ + --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ + --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ + --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 +markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ + --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ + --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ + --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ + --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ + --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ + --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ + --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ + --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ + --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ + --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ + --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ + --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ + --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ + --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ + --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ + --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ + --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ + --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ + --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ + --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ + --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ + --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ + --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ + --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ + --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ + --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ + --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ + --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ + --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ + --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ + --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ + --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ + --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ + --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ + --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ + --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ + --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ + --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ + --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ + --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ + --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ + --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ + --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ + --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ + --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ + --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ + --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ + --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ + --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ + --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ + --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ + --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ + --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ + --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ + --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ + --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ + --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ + --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ + --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba model-mommy==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3d332afce941c57f1990f45b083ba13252ba74fcd1ae43fd047e5af7a70fb312 \ --hash=sha256:40d6e740aad7509e696a324b94cf2b0a104da93c3d4a7924cea1be3d0eb95b4f -numpy==1.24.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f \ - --hash=sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61 \ - --hash=sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7 \ - --hash=sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400 \ - --hash=sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef \ - --hash=sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2 \ - --hash=sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d \ - --hash=sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc \ - --hash=sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835 \ - --hash=sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706 \ - --hash=sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5 \ - --hash=sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4 \ - --hash=sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6 \ - --hash=sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463 \ - --hash=sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a \ - --hash=sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f \ - --hash=sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e \ - --hash=sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e \ - --hash=sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694 \ - --hash=sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8 \ - --hash=sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64 \ - --hash=sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d \ - --hash=sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc \ - --hash=sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254 \ - --hash=sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2 \ - --hash=sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1 \ - --hash=sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810 \ - --hash=sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9 opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -957,83 +954,96 @@ opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < " oscrypto==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 -overrides==7.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d \ - --hash=sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757 -packaging==23.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f -pathspec==0.11.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ - --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 -phonenumbers==8.13.19 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:38180247697240ccedd74dec4bfbdbc22bb108b9c5f991f270ca3e41395e6f96 \ - --hash=sha256:ba542f20f6dc83be8f127f240f9b5b7e7c1dec42aceff1879400d4dc0c781d81 -pillow==10.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d \ - --hash=sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de \ - --hash=sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616 \ - --hash=sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839 \ - --hash=sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099 \ - --hash=sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a \ - --hash=sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219 \ - --hash=sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106 \ - --hash=sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b \ - --hash=sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412 \ - --hash=sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b \ - --hash=sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7 \ - --hash=sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2 \ - --hash=sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7 \ - --hash=sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14 \ - --hash=sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f \ - --hash=sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27 \ - --hash=sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57 \ - --hash=sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262 \ - --hash=sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28 \ - --hash=sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610 \ - --hash=sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172 \ - --hash=sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273 \ - --hash=sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e \ - --hash=sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d \ - --hash=sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818 \ - --hash=sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f \ - --hash=sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9 \ - --hash=sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01 \ - --hash=sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7 \ - --hash=sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651 \ - --hash=sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312 \ - --hash=sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80 \ - --hash=sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666 \ - --hash=sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061 \ - --hash=sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b \ - --hash=sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992 \ - --hash=sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593 \ - --hash=sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4 \ - --hash=sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db \ - --hash=sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba \ - --hash=sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd \ - --hash=sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e \ - --hash=sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212 \ - --hash=sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb \ - --hash=sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2 \ - --hash=sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34 \ - --hash=sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256 \ - --hash=sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f \ - --hash=sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2 \ - --hash=sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38 \ - --hash=sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996 \ - --hash=sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a \ - --hash=sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793 +overrides==7.7.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a \ + --hash=sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 +packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 +pathspec==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ + --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 +phonenumbers==8.13.29 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ + --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf +pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ + --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ + --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ + --hash=sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869 \ + --hash=sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e \ + --hash=sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04 \ + --hash=sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9 \ + --hash=sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e \ + --hash=sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe \ + --hash=sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef \ + --hash=sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56 \ + --hash=sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa \ + --hash=sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f \ + --hash=sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f \ + --hash=sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e \ + --hash=sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a \ + --hash=sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2 \ + --hash=sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2 \ + --hash=sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5 \ + --hash=sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a \ + --hash=sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2 \ + --hash=sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213 \ + --hash=sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563 \ + --hash=sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591 \ + --hash=sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c \ + --hash=sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2 \ + --hash=sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb \ + --hash=sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757 \ + --hash=sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0 \ + --hash=sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452 \ + --hash=sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad \ + --hash=sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01 \ + --hash=sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f \ + --hash=sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5 \ + --hash=sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61 \ + --hash=sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e \ + --hash=sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b \ + --hash=sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068 \ + --hash=sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9 \ + --hash=sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588 \ + --hash=sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483 \ + --hash=sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f \ + --hash=sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67 \ + --hash=sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7 \ + --hash=sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311 \ + --hash=sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6 \ + --hash=sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72 \ + --hash=sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6 \ + --hash=sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129 \ + --hash=sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13 \ + --hash=sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67 \ + --hash=sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c \ + --hash=sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516 \ + --hash=sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e \ + --hash=sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e \ + --hash=sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364 \ + --hash=sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023 \ + --hash=sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1 \ + --hash=sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04 \ + --hash=sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d \ + --hash=sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a \ + --hash=sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7 \ + --hash=sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb \ + --hash=sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4 \ + --hash=sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e \ + --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ + --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ + --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849 \ - --hash=sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3 -prompt-toolkit==2.0.10 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:46642344ce457641f28fc9d1c9ca939b63dadf8df128b86f1b9860e59c73a5e4 \ - --hash=sha256:e7f8af9e3d70f514373bf41aa51bc33af12a6db3f71461ea47fea985defb2c31 \ - --hash=sha256:f15af68f66e664eaa559d4ac8a928111eebd5feda0c11738b5998045224829db +pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be +prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ + --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ @@ -1048,145 +1058,121 @@ protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 -psycopg2==2.9.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084 \ - --hash=sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1 \ - --hash=sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866 \ - --hash=sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9 \ - --hash=sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5 \ - --hash=sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723 \ - --hash=sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5 \ - --hash=sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2 \ - --hash=sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2 \ - --hash=sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8 \ - --hash=sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8 +psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ + --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ + --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ + --hash=sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa \ + --hash=sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a \ + --hash=sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693 \ + --hash=sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372 \ + --hash=sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e \ + --hash=sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59 \ + --hash=sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 \ + --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ + --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ + --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:056ea7cc3c92a7d2a14b5bc9c9fa14efa794d9f05b9794206d089d06d3433dc7 \ - --hash=sha256:0653fb9fc2fa6787f2fa08631314ab7fc8070307bd344bf9471d1b7207c24623 \ - --hash=sha256:076edc972b68a66870cec41a4efdd72a6b655c4098a232314b02d2bfa3bfa157 \ - --hash=sha256:0a3e51c2be472b7867eb0c5d025b91400c2b73a0823b89d4303a9097e2ec6655 \ - --hash=sha256:0c7f8e8a7cf8e81ca7d44bea4f181783630959d41b4b51d2f74bc50f348a090f \ - --hash=sha256:10904368261e4509c091cbcc067e5a88b070ed9a10f7ad78f3029c175487490f \ - --hash=sha256:113752a55a8eaece2e4ac96bc8817f134c2c23477e477d085ba89e3aa0f4dc44 \ - --hash=sha256:12e05a76b223577a4696c76d7a6b36a0ccc491ffb3c6a8cf92d8001d93ddfd63 \ - --hash=sha256:136bc7247e97a921a020abbd6ef3169af97569869cd6eff41b6a15a73c44ea9b \ - --hash=sha256:1582f01eaf0537a696c846bea92082082b6bfc1103a88e777e983ea9fbdc2a0f \ - --hash=sha256:1767bd3f6370458e60c1d3d7b1d9c2751cc1ad743434e8ec84625a610c8b9195 \ - --hash=sha256:1e2979dc80246e18e348de51246d4c9b410186ffa3c50e77924bec436b1e36cb \ - --hash=sha256:1ea992659c03c3ea811d55fc0a997bec9dde863a617cc7b25cfde69ef32e55af \ - --hash=sha256:1f2d4516c32255782153e858f9a900ca6deadfb217fd3fb21bb2b60b4e04d04d \ - --hash=sha256:2494d20e4c22beac30150b4be3b8339bf2a02ab5580fa6553ca274bc08681a65 \ - --hash=sha256:260692420028319e201b8649b13ac0988974eeafaaef95d0dfbf7120c38dc000 \ - --hash=sha256:2646f8270f932d79ba61102a15ea19a50ae0d43b314e22b3f8f4b5fabbfa6e38 \ - --hash=sha256:27828f0227b54804aac6fb077b6bb48e640b5435fdd7fbf0c274093a7b78b69c \ - --hash=sha256:2bc736725f9bd18a60eec0ed6ef9b06b9785454c8d0105f2be16e4d6274e63d0 \ - --hash=sha256:2c08ac60c3caa31f825b5dbac47e4875bd4954d8f559650ad9e0b225eaf8ed0c \ - --hash=sha256:2c83892c7bf92b91d30faca53bb8ea21f9d7e39f0ae4008ef2c2f91116d0464a \ - --hash=sha256:354db020b1f8f11207b35360b92d95725621eb92656725c849a61e4b550f4acc \ - --hash=sha256:364dba61494e48f01ef50ae430e392f67ee1ee27e048daeda0e9d21c3ab2d609 \ - --hash=sha256:37dad73a2f82975ed563d6a277fd9b50e5d9c79910c4aec787e2d63547202315 \ - --hash=sha256:38113856c7fad8c19be7ddd57df0c3e77b1b2336459cb03ee3903ce9d5e236ce \ - --hash=sha256:38aed5a1bbc3025859f56d6a32f6e53ca173283cb95348e03480f333b1091e7d \ - --hash=sha256:3ad083df8fe342d4d8d00cc1d3c1a23f0dc84fce416eb301e69f1ddbbe124d3f \ - --hash=sha256:3c1bf1a7b05a65d3b37a9adea98e195e0081be6b17ca03a86f92aeb8b110f468 \ - --hash=sha256:3d1dde10bd9962b1434053239b1d5490fc31a2b02d8950a5f731bc584c7a5a0f \ - --hash=sha256:44aaf1a07ad0824e407dafc637a852e9a44d94664293bbe7d8ee549c356c8882 \ - --hash=sha256:44afa3c18d45053fe8d8228950ee4c8eaf3b5a7f3b64963fdeac19b8342c987f \ - --hash=sha256:4a70d23eedd88a6484aa79a732a90e36701048a1509078d1b59578ef0ea2cdf5 \ - --hash=sha256:4aa89919fbd8a553cd7d03bf23d5bc5deee622e1b5db572121287f0e64979476 \ - --hash=sha256:4cc6bb11f4e8e5ed91d78b9880774fbc0856cb226151b0a93b549c2b26a00c19 \ - --hash=sha256:536e1f58419e1ec35f6d1310c88496f0d60e4f182cacb773d38076f66a60b149 \ - --hash=sha256:5402ee0f61e7798ea93a01b0489520f2abfd9b57b76b82c93714c4318c66ca06 \ - --hash=sha256:56814b41486e2d712a8bc02a7b1f17b87fa30999d2323bbd13cf0e52296813a1 \ - --hash=sha256:5b73441a1159f1fb37353aaefb9e801ab35a07dd93cb8177504b25a317f4215a \ - --hash=sha256:61beaa79d392d44dc19d6f11ccd824d3cccb865c4372157c40b92533f8d76dd0 \ - --hash=sha256:6c2d118d1b6c9e2d577e215567eedbe11804c3aafa76d39ec1f8bc74e918fd07 \ - --hash=sha256:6e2f9d76c00e805d47f19c7a96a14e4135238a7551a18bfd89bb757993fd0933 \ - --hash=sha256:71ed769b58d44e0bc2701aa59eb199b6665c16e8a5b8b4a84db01f71580ec448 \ - --hash=sha256:7349f99f1ef8b940b309179733f2cad2e6037a29560f1b03fdc6aa6be0a8d03c \ - --hash=sha256:75f3f534f33651b73f4d3a16d0254de096f43737d51e981478d580f4b006b427 \ - --hash=sha256:76fc18653a5c95e5301a52d1b5afb27c9adc77175bf00f73e94f501caf0e05ad \ - --hash=sha256:7cb0c397f29688a5bd2c0dbd44451bc44ebb9b22babc90f97db5ec3e5bb69977 \ - --hash=sha256:7cc24728a1a9cef497697e53b3d085fb4d3bc0ef1ef4d9b424d9cf808f52c146 \ - --hash=sha256:7e63a56eb7fdee1587d62f753ccd6d5fa24fbeea57a40d9d8beaef679a24bdd6 \ - --hash=sha256:832d16f248ca0cc96929139734ec32d21c67669dcf8a9f3f733c85054429c012 \ - --hash=sha256:8488e973547e8fb1b4193fd9faf5236cf1b7cd5e9e6dc7ff6b4d9afdc4c720cb \ - --hash=sha256:849cff945284c577c5f621d2df76ca7b60f803cc8663ff01b778ad0af0e39bb9 \ - --hash=sha256:88ec906eb2d92420f5b074f59cf9e50b3bb44f3cb70e6512099fdd4d88c2f87c \ - --hash=sha256:8d3b9c91eeb372a64ec6686c1402afd40cc20f61a0866850f7d989b6bf39a41a \ - --hash=sha256:8f5624f0f67f2b9ecaa812e1dfd2e35b256487566585160c6c19268bf2ffeccc \ - --hash=sha256:905a12bf088d6fa20e094f9a477bf84bd823651d8b8384f59bcd50eaa92e6a52 \ - --hash=sha256:92486a04d54987054f8b4405a9af9d482e5100d6fe6374fc3303015983fc8bda \ - --hash=sha256:96eb10ef8920990e703da348bb25fedb8b8653b5966e4e078e5be382b430f9e0 \ - --hash=sha256:96fb679c7ca12a512d36d01c174a4fbfd912b5535cc722eb2c010c7b44eceb8e \ - --hash=sha256:98d8b3932f1a369364606417ded5412c4ffb15bedbcf797c31317e55bd5d920e \ - --hash=sha256:9dbab442a8d9ca918b4ed99db8d89d11b1f067a7dadb642476ad0889560dac79 \ - --hash=sha256:9ef3e2e407e4cad2df3c89488a761ed1f1c33f3b826a2ea9a411b0a7d1cccf1b \ - --hash=sha256:9ff737f24b34ed26de62d481ef522f233d3c5927279f6b7229de9b0deb3f76b5 \ - --hash=sha256:a1a39fecb5f0b19faee9a8a8176c805ed78ce45d760259a4ff3d21a7daa4dfc1 \ - --hash=sha256:a402ae1066be594701ac45661278dc4a466fb684258d1a2c434de54971b006ca \ - --hash=sha256:a5c51460ede609fbb4fa883a8fe16e749964ddb459966d0518991ec02eb8dfb9 \ - --hash=sha256:a8ca13480ce16daad0504be6ce893b0ee8ec34cd43b993b754198a89e2787f7e \ - --hash=sha256:ab4a2381005769a4af2ffddae74d769e8a4aae42e970596208ec6d615c6fb080 \ - --hash=sha256:aeafc7f5bbddc46213707266cadc94439bfa87ecf699444de8be044d6d6eb26f \ - --hash=sha256:aecd5ed096b0e5d93fb0367fd8f417cef38ea30b786f2501f6c34eabd9062c38 \ - --hash=sha256:af452e69446fadf247f18ac5d153b1f7e61ef708f23ce85d8c52833748c58075 \ - --hash=sha256:af46f0b7a1342b49f208fed31f5a83b8495bb14b652f621e0a6787d2f10f24ee \ - --hash=sha256:b02b5e1f54c3396c48b665050464803c23c685716eb5d82a1d81bf81b5230da4 \ - --hash=sha256:b28996872b48baf829ee75fa06998b607c66a4847ac838e6fd7473a6b2ab68e7 \ - --hash=sha256:b7692f539a26265cece1e27e366df5b976a6db6b1f825a9e0466395b314ee48b \ - --hash=sha256:ba44fad1d114539d6a1509966b20b74d2dec9a5b0ee12dd7fd0a1bb7b8785e5f \ - --hash=sha256:bf15145b1f8056d12c67255cd3ce5d317cd4450d5ee747760d8d088d85d12a2d \ - --hash=sha256:c3dc2920cc96f9aa40c6dc54256e436cc95c0a15562eb7bd579e1811593c377e \ - --hash=sha256:c54af5069da58ea643ad34ff32fd6bc4eebb8ae0fef9821cd8919063e0aeeaab \ - --hash=sha256:c5ea0153482e5b4d601c25465771c7267c99fddf5d3f3bdc238ef930e6d051cf \ - --hash=sha256:c9ffd823c46e05ef3eb28b821aa7bc501efa95ba8880b4a1380068e32c5bed47 \ - --hash=sha256:ca55c9671bb637ce13d18ef352fd32ae7aba21b4402f300a63f1fb1fd18e0364 \ - --hash=sha256:caa94726791e316f0f63049ee00dff3b34a629b0d099f3b594770f7d0d8f1f56 \ - --hash=sha256:cc956f78651778ec1ab105196e90e0e5f5275884793ab67c60938c75bcca3989 \ - --hash=sha256:ccbf355b7276593c68fa824030e68cb29f630c50e20cb11ebb0ee450ae6b3d08 \ - --hash=sha256:cf08b43d1d5d1678f295f0431a4a7e1707d4652576e1d0f8914b5e0213bfeee5 \ - --hash=sha256:d06c78074646111fb01836585f1198367b17d57c9f427e07aaa9ff499003e58d \ - --hash=sha256:d2b53e1f851a2b406bbb5ac58e16c4a5496038eddd856cc900278fa0da97f3fc \ - --hash=sha256:d41df8e10b094640a6b234851b624b76a41552f637b9fb34dc720b9fe4ef3be4 \ - --hash=sha256:d7abd17a838a52140e3aeca271054e321226f52df7e0a9f0da8f91ea123afe98 \ - --hash=sha256:de52ddfa6e10e892d00f747bf7135d7007302ad82e243cf16d89dd77b03b649d \ - --hash=sha256:df33902464410a1f1a0411a235f0a34e7e129f12cb6340daca0f9d1390f5fe10 \ - --hash=sha256:e16aaf788f1de5a85c8f8fcc9c1ca1dd7dd52b8ad30a7889ca31c7c7606615b8 \ - --hash=sha256:e3ad4968711fb379a67c8c755beb4dae8b721a83737737b7bcee27c05400b047 \ - --hash=sha256:e483b8b913fcd3b48badec54185c150cb7ab0e6487914b84dc7cde2365e0c892 \ - --hash=sha256:e71f666c3bf019f2490a47dddb44c3ccea2e69ac882f7495c68dc14d4065eac2 \ - --hash=sha256:ea1498ce4491236d1cffa0eee9ad0968b6ecb0c1cd711699c5677fc689905f00 \ - --hash=sha256:eaab9dc009e22726c62fe3b850b797e7f0e7ba76d245284d1064081f512c7226 \ - --hash=sha256:ec79dbe23702795944d2ae4c6925e35a075b88acd0d20acde7c77a817ebbce94 \ - --hash=sha256:f1b92e72babfd56585c75caf44f0b15258c58e6be23bc33f90885cebffde3400 \ - --hash=sha256:f1f46700402312bdc31912f6fc17f5ecaaaa3bafe5487c48f07c800052736289 \ - --hash=sha256:f518eac285c9632be337323eef9824a856f2680f943a9b68ac41d5f5bad7df7c \ - --hash=sha256:f86f20a9d5bee1a6ede0f2757b917bac6908cde0f5ad9fcb3606db1e2968bcf5 \ - --hash=sha256:f8fc652c354d3362e2932a79d5ac4bbd7170757a41a62c4fe0f057d29f10bebb \ - --hash=sha256:fe272a72c7ed29f84c42fedd2d06c2f9858dc0c00dae3b34ba15d6d8ae0fbaaf \ - --hash=sha256:fe863491664c6720d65ae438d4efaa5eca766565a53adb53bf14bc3246c72fe0 -pydantic-settings==2.0.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945 \ - --hash=sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625 -pydantic==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0b8be5413c06aadfbe56f6dc1d45c9ed25fd43264414c571135c97dd77c2bedb \ - --hash=sha256:dc5244a8939e0d9a68f1f1b5f550b2e1c879912033b1becbedb315accc75441b +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ + --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pydyf==0.8.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a -pygments==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692 \ - --hash=sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29 -pyhanko-certvalidator==0.23.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:287d7c51d8ff4a1f8d9b8909f9d26f435f00d4cdd37351745b444768a668a6a5 \ - --hash=sha256:424d9070e92096ab088ae1bf5b027a0fd6adb48a3b5ff446d53b14d1dbc00338 -pyhanko==0.20.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2b693e20a3b06ef97dc3a375e9f99bf78db60cc3ce4bf4d05ad043f5df38d105 \ - --hash=sha256:d494f4f59672b182587f0ae55b76ef4296a94bda5c1ca9c2e771e58237e130db +pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ + --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 +pyhanko-certvalidator==0.26.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ + --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 +pyhanko==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ + --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -1204,9 +1190,9 @@ pyotp==2.9.0 ; python_version >= "3.8" and python_version < "4.0" \ pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:67f6bb7acd8fdbcf7e7a7d5319d12b8de100f5f94538d6e5647aaec3eb7c7dde \ - --hash=sha256:9fab275fea57c9e5b2416035d13d867a459ebe36294a4c39a3d0bb45a7404bad +pypdf==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ + --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a pyphen==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa @@ -1222,9 +1208,9 @@ pytest-common-subject==1.0.6 ; python_version >= "3.8" and python_version < "4.0 pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest-django==4.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c60834861933773109334fe5a53e83d1ef4828f2203a1d6a0fa9972f4f75ab3e \ - --hash=sha256:d9076f759bb7c36939dbdd5ae6633c18edfc2902d1a69fdbefd2426b970ce6c2 +pytest-django==4.7.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2 \ + --hash=sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8 pytest-drf==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4d6106f7f313de2e8158ca41550817ca564f1ddcf6ba68a1e2ab404e04b36282 \ --hash=sha256:4f8bd999a0d80654a55145761e5ced7601baf301fdb020ba62a25ac708fe070a @@ -1234,24 +1220,24 @@ pytest-fixture-order==0.1.4 ; python_version >= "3.8" and python_version < "4.0" pytest-lambda==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e91b6e1f0c13d54fdda0c7b0be3deefca3b65e3c140f3e96d2f4968eb37d65e5 \ --hash=sha256:f7aa827c74be5b2332f2beb9295f46bbffc1826301fc1c0507b077ba2ea8ca4a -pytest-mock==3.11.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39 \ - --hash=sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f -pytest==7.4.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32 \ - --hash=sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a +pytest-mock==3.12.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f \ + --hash=sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9 +pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ + --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 python-bidi==0.4.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pytz==2023.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ - --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a +pytz==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -1330,98 +1316,103 @@ rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1 \ --hash=sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f \ --hash=sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51 -referencing==0.30.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf \ - --hash=sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0 -regex==2023.8.8 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf \ - --hash=sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46 \ - --hash=sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18 \ - --hash=sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7 \ - --hash=sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7 \ - --hash=sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9 \ - --hash=sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559 \ - --hash=sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71 \ - --hash=sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280 \ - --hash=sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898 \ - --hash=sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684 \ - --hash=sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3 \ - --hash=sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9 \ - --hash=sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8 \ - --hash=sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca \ - --hash=sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c \ - --hash=sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c \ - --hash=sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab \ - --hash=sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd \ - --hash=sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56 \ - --hash=sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586 \ - --hash=sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7 \ - --hash=sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103 \ - --hash=sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac \ - --hash=sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177 \ - --hash=sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109 \ - --hash=sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033 \ - --hash=sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb \ - --hash=sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61 \ - --hash=sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800 \ - --hash=sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb \ - --hash=sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8 \ - --hash=sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570 \ - --hash=sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34 \ - --hash=sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e \ - --hash=sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4 \ - --hash=sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb \ - --hash=sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7 \ - --hash=sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208 \ - --hash=sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc \ - --hash=sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb \ - --hash=sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3 \ - --hash=sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504 \ - --hash=sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb \ - --hash=sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57 \ - --hash=sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b \ - --hash=sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601 \ - --hash=sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116 \ - --hash=sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8 \ - --hash=sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6 \ - --hash=sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6 \ - --hash=sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93 \ - --hash=sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09 \ - --hash=sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a \ - --hash=sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921 \ - --hash=sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a \ - --hash=sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495 \ - --hash=sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6 \ - --hash=sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7 \ - --hash=sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236 \ - --hash=sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235 \ - --hash=sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470 \ - --hash=sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b \ - --hash=sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5 \ - --hash=sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61 \ - --hash=sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c \ - --hash=sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db \ - --hash=sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be \ - --hash=sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96 \ - --hash=sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a \ - --hash=sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2 \ - --hash=sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63 \ - --hash=sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef \ - --hash=sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739 \ - --hash=sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e \ - --hash=sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217 \ - --hash=sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90 \ - --hash=sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4 \ - --hash=sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8 \ - --hash=sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3 \ - --hash=sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357 \ - --hash=sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4 \ - --hash=sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b \ - --hash=sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882 \ - --hash=sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a \ - --hash=sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675 \ - --hash=sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf \ - --hash=sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 +regex==2023.12.25 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5 \ + --hash=sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770 \ + --hash=sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc \ + --hash=sha256:09da66917262d9481c719599116c7dc0c321ffcec4b1f510c4f8a066f8768105 \ + --hash=sha256:0ecf44ddf9171cd7566ef1768047f6e66975788258b1c6c6ca78098b95cf9a3d \ + --hash=sha256:0fda75704357805eb953a3ee15a2b240694a9a514548cd49b3c5124b4e2ad01b \ + --hash=sha256:11a963f8e25ab5c61348d090bf1b07f1953929c13bd2309a0662e9ff680763c9 \ + --hash=sha256:150c39f5b964e4d7dba46a7962a088fbc91f06e606f023ce57bb347a3b2d4630 \ + --hash=sha256:1b9d811f72210fa9306aeb88385b8f8bcef0dfbf3873410413c00aa94c56c2b6 \ + --hash=sha256:1e0eabac536b4cc7f57a5f3d095bfa557860ab912f25965e08fe1545e2ed8b4c \ + --hash=sha256:22a86d9fff2009302c440b9d799ef2fe322416d2d58fc124b926aa89365ec482 \ + --hash=sha256:22f3470f7524b6da61e2020672df2f3063676aff444db1daa283c2ea4ed259d6 \ + --hash=sha256:263ef5cc10979837f243950637fffb06e8daed7f1ac1e39d5910fd29929e489a \ + --hash=sha256:283fc8eed679758de38fe493b7d7d84a198b558942b03f017b1f94dda8efae80 \ + --hash=sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5 \ + --hash=sha256:298dc6354d414bc921581be85695d18912bea163a8b23cac9a2562bbcd5088b1 \ + --hash=sha256:2aae8101919e8aa05ecfe6322b278f41ce2994c4a430303c4cd163fef746e04f \ + --hash=sha256:2f4e475a80ecbd15896a976aa0b386c5525d0ed34d5c600b6d3ebac0a67c7ddf \ + --hash=sha256:34e4af5b27232f68042aa40a91c3b9bb4da0eeb31b7632e0091afc4310afe6cb \ + --hash=sha256:37f8e93a81fc5e5bd8db7e10e62dc64261bcd88f8d7e6640aaebe9bc180d9ce2 \ + --hash=sha256:3a17d3ede18f9cedcbe23d2daa8a2cd6f59fe2bf082c567e43083bba3fb00347 \ + --hash=sha256:3b1de218d5375cd6ac4b5493e0b9f3df2be331e86520f23382f216c137913d20 \ + --hash=sha256:43f7cd5754d02a56ae4ebb91b33461dc67be8e3e0153f593c509e21d219c5060 \ + --hash=sha256:4558410b7a5607a645e9804a3e9dd509af12fb72b9825b13791a37cd417d73a5 \ + --hash=sha256:4719bb05094d7d8563a450cf8738d2e1061420f79cfcc1fa7f0a44744c4d8f73 \ + --hash=sha256:4bfc2b16e3ba8850e0e262467275dd4d62f0d045e0e9eda2bc65078c0110a11f \ + --hash=sha256:518440c991f514331f4850a63560321f833979d145d7d81186dbe2f19e27ae3d \ + --hash=sha256:51f4b32f793812714fd5307222a7f77e739b9bc566dc94a18126aba3b92b98a3 \ + --hash=sha256:531ac6cf22b53e0696f8e1d56ce2396311254eb806111ddd3922c9d937151dae \ + --hash=sha256:5cd05d0f57846d8ba4b71d9c00f6f37d6b97d5e5ef8b3c3840426a475c8f70f4 \ + --hash=sha256:5dd58946bce44b53b06d94aa95560d0b243eb2fe64227cba50017a8d8b3cd3e2 \ + --hash=sha256:60080bb3d8617d96f0fb7e19796384cc2467447ef1c491694850ebd3670bc457 \ + --hash=sha256:636ba0a77de609d6510235b7f0e77ec494d2657108f777e8765efc060094c98c \ + --hash=sha256:67d3ccfc590e5e7197750fcb3a2915b416a53e2de847a728cfa60141054123d4 \ + --hash=sha256:68191f80a9bad283432385961d9efe09d783bcd36ed35a60fb1ff3f1ec2efe87 \ + --hash=sha256:7502534e55c7c36c0978c91ba6f61703faf7ce733715ca48f499d3dbbd7657e0 \ + --hash=sha256:7aa47c2e9ea33a4a2a05f40fcd3ea36d73853a2aae7b4feab6fc85f8bf2c9704 \ + --hash=sha256:7d2af3f6b8419661a0c421584cfe8aaec1c0e435ce7e47ee2a97e344b98f794f \ + --hash=sha256:7e316026cc1095f2a3e8cc012822c99f413b702eaa2ca5408a513609488cb62f \ + --hash=sha256:88ad44e220e22b63b0f8f81f007e8abbb92874d8ced66f32571ef8beb0643b2b \ + --hash=sha256:88d1f7bef20c721359d8675f7d9f8e414ec5003d8f642fdfd8087777ff7f94b5 \ + --hash=sha256:89723d2112697feaa320c9d351e5f5e7b841e83f8b143dba8e2d2b5f04e10923 \ + --hash=sha256:8a0ccf52bb37d1a700375a6b395bff5dd15c50acb745f7db30415bae3c2b0715 \ + --hash=sha256:8c2c19dae8a3eb0ea45a8448356ed561be843b13cbc34b840922ddf565498c1c \ + --hash=sha256:905466ad1702ed4acfd67a902af50b8db1feeb9781436372261808df7a2a7bca \ + --hash=sha256:9852b76ab558e45b20bf1893b59af64a28bd3820b0c2efc80e0a70a4a3ea51c1 \ + --hash=sha256:98a2636994f943b871786c9e82bfe7883ecdaba2ef5df54e1450fa9869d1f756 \ + --hash=sha256:9aa1a67bbf0f957bbe096375887b2505f5d8ae16bf04488e8b0f334c36e31360 \ + --hash=sha256:9eda5f7a50141291beda3edd00abc2d4a5b16c29c92daf8d5bd76934150f3edc \ + --hash=sha256:a6d1047952c0b8104a1d371f88f4ab62e6275567d4458c1e26e9627ad489b445 \ + --hash=sha256:a9b6d73353f777630626f403b0652055ebfe8ff142a44ec2cf18ae470395766e \ + --hash=sha256:a9cc99d6946d750eb75827cb53c4371b8b0fe89c733a94b1573c9dd16ea6c9e4 \ + --hash=sha256:ad83e7545b4ab69216cef4cc47e344d19622e28aabec61574b20257c65466d6a \ + --hash=sha256:b014333bd0217ad3d54c143de9d4b9a3ca1c5a29a6d0d554952ea071cff0f1f8 \ + --hash=sha256:b43523d7bc2abd757119dbfb38af91b5735eea45537ec6ec3a5ec3f9562a1c53 \ + --hash=sha256:b521dcecebc5b978b447f0f69b5b7f3840eac454862270406a39837ffae4e697 \ + --hash=sha256:b77e27b79448e34c2c51c09836033056a0547aa360c45eeeb67803da7b0eedaf \ + --hash=sha256:b7a635871143661feccce3979e1727c4e094f2bdfd3ec4b90dfd4f16f571a87a \ + --hash=sha256:b7fca9205b59c1a3d5031f7e64ed627a1074730a51c2a80e97653e3e9fa0d415 \ + --hash=sha256:ba1b30765a55acf15dce3f364e4928b80858fa8f979ad41f862358939bdd1f2f \ + --hash=sha256:ba99d8077424501b9616b43a2d208095746fb1284fc5ba490139651f971d39d9 \ + --hash=sha256:c25a8ad70e716f96e13a637802813f65d8a6760ef48672aa3502f4c24ea8b400 \ + --hash=sha256:c3c4a78615b7762740531c27cf46e2f388d8d727d0c0c739e72048beb26c8a9d \ + --hash=sha256:c40281f7d70baf6e0db0c2f7472b31609f5bc2748fe7275ea65a0b4601d9b392 \ + --hash=sha256:c7ad32824b7f02bb3c9f80306d405a1d9b7bb89362d68b3c5a9be53836caebdb \ + --hash=sha256:cb3fe77aec8f1995611f966d0c656fdce398317f850d0e6e7aebdfe61f40e1cd \ + --hash=sha256:cc038b2d8b1470364b1888a98fd22d616fba2b6309c5b5f181ad4483e0017861 \ + --hash=sha256:cc37b9aeebab425f11f27e5e9e6cf580be7206c6582a64467a14dda211abc232 \ + --hash=sha256:cc6bb9aa69aacf0f6032c307da718f61a40cf970849e471254e0e91c56ffca95 \ + --hash=sha256:d126361607b33c4eb7b36debc173bf25d7805847346dd4d99b5499e1fef52bc7 \ + --hash=sha256:d15b274f9e15b1a0b7a45d2ac86d1f634d983ca40d6b886721626c47a400bf39 \ + --hash=sha256:d166eafc19f4718df38887b2bbe1467a4f74a9830e8605089ea7a30dd4da8887 \ + --hash=sha256:d498eea3f581fbe1b34b59c697512a8baef88212f92e4c7830fcc1499f5b45a5 \ + --hash=sha256:d6f7e255e5fa94642a0724e35406e6cb7001c09d476ab5fce002f652b36d0c39 \ + --hash=sha256:d78bd484930c1da2b9679290a41cdb25cc127d783768a0369d6b449e72f88beb \ + --hash=sha256:d865984b3f71f6d0af64d0d88f5733521698f6c16f445bb09ce746c92c97c586 \ + --hash=sha256:d902a43085a308cef32c0d3aea962524b725403fd9373dea18110904003bac97 \ + --hash=sha256:d94a1db462d5690ebf6ae86d11c5e420042b9898af5dcf278bd97d6bda065423 \ + --hash=sha256:da695d75ac97cb1cd725adac136d25ca687da4536154cdc2815f576e4da11c69 \ + --hash=sha256:db2a0b1857f18b11e3b0e54ddfefc96af46b0896fb678c85f63fb8c37518b3e7 \ + --hash=sha256:df26481f0c7a3f8739fecb3e81bc9da3fcfae34d6c094563b9d4670b047312e1 \ + --hash=sha256:e14b73607d6231f3cc4622809c196b540a6a44e903bcfad940779c80dffa7be7 \ + --hash=sha256:e2610e9406d3b0073636a3a2e80db05a02f0c3169b5632022b4e81c0364bcda5 \ + --hash=sha256:e692296c4cc2873967771345a876bcfc1c547e8dd695c6b89342488b0ea55cd8 \ + --hash=sha256:e693e233ac92ba83a87024e1d32b5f9ab15ca55ddd916d878146f4e3406b5c91 \ + --hash=sha256:e81469f7d01efed9b53740aedd26085f20d49da65f9c1f41e822a33992cb1590 \ + --hash=sha256:e8c7e08bb566de4faaf11984af13f6bcf6a08f327b13631d41d62592681d24fe \ + --hash=sha256:ed19b3a05ae0c97dd8f75a5d8f21f7723a8c33bbc555da6bbe1f96c470139d3c \ + --hash=sha256:efb2d82f33b2212898f1659fb1c2e9ac30493ac41e4d53123da374c3b5541e64 \ + --hash=sha256:f44dd4d68697559d007462b0a3a1d9acd61d97072b71f6d1968daef26bc744bd \ + --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ + --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ + --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ @@ -1471,12 +1462,12 @@ reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.6.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0fcf4d1a09029d79322dd814ab0b2e66ac183633037561881d45abae8a161d95 \ - --hash=sha256:f8ff96693ec6e261d1544e9f7d9a5811c5ef5d74c8adb4978430fc0dac16777e -rich==13.5.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:146a90b3b6b47cac4a73c12866a499e9817426423f57c5a66949c086191a8808 \ - --hash=sha256:fb9d6c0a0f643c99eed3875b5377a184132ba9be4d61516a55273d3554d75a39 +rich-click==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:bc4163d4e2a3361e21c4d72d300eca6eb8896dfc978667923cb1d4937b8769a3 \ + --hash=sha256:bced1594c497dc007ab49508ff198bb437c576d01291c13a61658999066481f4 +rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ + --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:113132a40ce7d03b2ced4fac215f0297338ed1c207394b739266efab7831988b \ --hash=sha256:122aa52bcf7ad9f12728d309012d1308c6ecfe4d6b09ea867a110dcad7b7728c \ @@ -1507,133 +1498,135 @@ robotframework-assertion-engine==1.0.0 ; python_version >= "3.8" and python_vers robotframework-browser==16.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:cee956718a99165cb3aac18758f939a54d324199e4762f54b58c2baa71efa9e7 \ --hash=sha256:eaff862bc9798d8b40927efc2f56d61f8316821c498cc95d9840860cab4a6d69 -robotframework-debuglibrary==2.3.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2c3fb8390afc3934777657d3cf8a1674c731000035d614a21552ae96ca99fd30 \ - --hash=sha256:d33974870e8f275958ccd736a120b313dc71610018f30b69b1d816456ed666c7 +robotframework-debuglibrary==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:a2bfb2636ead7be440c224317891b4b406a9a71d84b26924031ccf3791a00b96 \ + --hash=sha256:c8e135c7561721d36210d6f59a09b7538064367e82d8a3be67cb87088cf9cba7 robotframework-otp==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a429c5755760d81aac76a7b5bbf44e49f0d6b480c01784706603232d53d1fcfb robotframework-postgresqldb==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ab276e83b705b3f115cff02a911dce6000f9e2dfe5efcee58536eac0e0c9e074 \ --hash=sha256:fa28c5fed14e69ef483613b16c8ac76d99329eb4c876e37f31af8b5dabe24987 -robotframework-pythonlibcore==4.2.0 ; python_version >= "3.8" and python_version < "4" \ - --hash=sha256:163ed7780cdfe392decc00cc67d614241d25c95565c20fa0ba18c0bee35c81a4 \ - --hash=sha256:f46d8a4b21ffa15f907148173a340bff70fdbfdbd160979b8f90d686e40fb1ae -robotframework-tidy==4.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:90f66b7956d4355421de4df7ad5de2407b0bd29ad3544149f25908a6315d71ab \ - --hash=sha256:cc55fbea1a9796bcd35ddba2c6b01394c5ea9dceea056ed9f7b2886b1101dcf8 +robotframework-pythonlibcore==4.3.0 ; python_version >= "3.8" and python_version < "4" \ + --hash=sha256:29aacdfc19aca812e9ace14cfb8cfd8a14298ed9fbddbeceef964c2c2e84d6c6 \ + --hash=sha256:37c63c20fb296b5c202261f78c5baf91c98ee344af52f625fb975d05a16f09b1 +robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ + --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 robotframework==6.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789 \ --hash=sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7 -rpds-py==0.9.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f \ - --hash=sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238 \ - --hash=sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f \ - --hash=sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f \ - --hash=sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c \ - --hash=sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298 \ - --hash=sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260 \ - --hash=sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1 \ - --hash=sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d \ - --hash=sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7 \ - --hash=sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f \ - --hash=sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876 \ - --hash=sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe \ - --hash=sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be \ - --hash=sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32 \ - --hash=sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3 \ - --hash=sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18 \ - --hash=sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d \ - --hash=sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620 \ - --hash=sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b \ - --hash=sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae \ - --hash=sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496 \ - --hash=sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1 \ - --hash=sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67 \ - --hash=sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f \ - --hash=sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764 \ - --hash=sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196 \ - --hash=sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e \ - --hash=sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846 \ - --hash=sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b \ - --hash=sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d \ - --hash=sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26 \ - --hash=sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e \ - --hash=sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044 \ - --hash=sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c \ - --hash=sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d \ - --hash=sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad \ - --hash=sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d \ - --hash=sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab \ - --hash=sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920 \ - --hash=sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e \ - --hash=sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872 \ - --hash=sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3 \ - --hash=sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611 \ - --hash=sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4 \ - --hash=sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c \ - --hash=sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193 \ - --hash=sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af \ - --hash=sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10 \ - --hash=sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd \ - --hash=sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f \ - --hash=sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b \ - --hash=sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945 \ - --hash=sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752 \ - --hash=sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c \ - --hash=sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387 \ - --hash=sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8 \ - --hash=sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d \ - --hash=sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931 \ - --hash=sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03 \ - --hash=sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502 \ - --hash=sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f \ - --hash=sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55 \ - --hash=sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82 \ - --hash=sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798 \ - --hash=sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a \ - --hash=sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b \ - --hash=sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa \ - --hash=sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f \ - --hash=sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192 \ - --hash=sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020 \ - --hash=sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7 \ - --hash=sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1 \ - --hash=sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386 \ - --hash=sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90 \ - --hash=sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f \ - --hash=sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe \ - --hash=sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596 \ - --hash=sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f \ - --hash=sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387 \ - --hash=sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16 \ - --hash=sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e \ - --hash=sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b \ - --hash=sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6 \ - --hash=sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1 \ - --hash=sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de \ - --hash=sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0 \ - --hash=sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3 \ - --hash=sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468 \ - --hash=sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e \ - --hash=sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd \ - --hash=sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324 \ - --hash=sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c \ - --hash=sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535 \ - --hash=sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55 \ - --hash=sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6 \ - --hash=sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07 -setuptools==68.1.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d \ - --hash=sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b +rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ + --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ + --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ + --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ + --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ + --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ + --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ + --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ + --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ + --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ + --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ + --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ + --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ + --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ + --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ + --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ + --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ + --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ + --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ + --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ + --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ + --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ + --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ + --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ + --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ + --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ + --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ + --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ + --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ + --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ + --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ + --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ + --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ + --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ + --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ + --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ + --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ + --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ + --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ + --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ + --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ + --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ + --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ + --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ + --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ + --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ + --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ + --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ + --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ + --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ + --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ + --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ + --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ + --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ + --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ + --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ + --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ + --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ + --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ + --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ + --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ + --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ + --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ + --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ + --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ + --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ + --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ + --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ + --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ + --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ + --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ + --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ + --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ + --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ + --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ + --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ + --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ + --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ + --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ + --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ + --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ + --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ + --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ + --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ + --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ + --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ + --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ + --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ + --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ + --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ + --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ + --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ + --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ + --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ + --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ + --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ + --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ + --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ + --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.4.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8 \ - --hash=sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea +soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ + --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlparse==0.4.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \ --hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c @@ -1648,30 +1641,30 @@ tinycss2==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -toolz==0.12.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ - --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 +toolz==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ + --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d tqdm==4.66.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386 \ --hash=sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7 typer==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 -tzdata==2023.3 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ - --hash=sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a \ - --hash=sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda -tzlocal==5.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803 \ - --hash=sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f -uritools==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:d122d394ed6e6e15ac0fddba6a5b19e9fa204e7797507815cbfb0e1455ac0475 \ - --hash=sha256:efc5c3a6de05404850685a8d3f34da8476b56aa3516fbf8eff5c8704c7a2826f -urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ - --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e +typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd +tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ + --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ + --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 +tzlocal==5.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ + --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e +uritools==4.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ + --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e +urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ + --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ @@ -1785,102 +1778,97 @@ watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d -wcwidth==0.2.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e \ - --hash=sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0 -weasyprint==60.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:55227e5e44f5f34bc9cec651329bd38d063ef7d29151d4b058d4af1ca943d4a7 \ - --hash=sha256:56b9812280118357b0f63b1efe18199e08343d4a56a3393c1d475ab878cea26a +wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ + --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 +weasyprint==60.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ + --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 wheel==0.40.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \ --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247 -whitenoise[brotli]==6.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8 \ - --hash=sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec -wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 \ - --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 \ - --hash=sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a \ - --hash=sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c \ - --hash=sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079 \ - --hash=sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923 \ - --hash=sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f \ - --hash=sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1 \ - --hash=sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8 \ - --hash=sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86 \ - --hash=sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0 \ - --hash=sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364 \ - --hash=sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e \ - --hash=sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c \ - --hash=sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e \ - --hash=sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c \ - --hash=sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727 \ - --hash=sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff \ - --hash=sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e \ - --hash=sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29 \ - --hash=sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7 \ - --hash=sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72 \ - --hash=sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475 \ - --hash=sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a \ - --hash=sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317 \ - --hash=sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2 \ - --hash=sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd \ - --hash=sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640 \ - --hash=sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98 \ - --hash=sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248 \ - --hash=sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e \ - --hash=sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d \ - --hash=sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec \ - --hash=sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1 \ - --hash=sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e \ - --hash=sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9 \ - --hash=sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92 \ - --hash=sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb \ - --hash=sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094 \ - --hash=sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46 \ - --hash=sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29 \ - --hash=sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd \ - --hash=sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705 \ - --hash=sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8 \ - --hash=sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975 \ - --hash=sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb \ - --hash=sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e \ - --hash=sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b \ - --hash=sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418 \ - --hash=sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019 \ - --hash=sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1 \ - --hash=sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba \ - --hash=sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6 \ - --hash=sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2 \ - --hash=sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3 \ - --hash=sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7 \ - --hash=sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752 \ - --hash=sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416 \ - --hash=sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f \ - --hash=sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1 \ - --hash=sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc \ - --hash=sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145 \ - --hash=sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee \ - --hash=sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a \ - --hash=sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7 \ - --hash=sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b \ - --hash=sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653 \ - --hash=sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0 \ - --hash=sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90 \ - --hash=sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29 \ - --hash=sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6 \ - --hash=sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034 \ - --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ - --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ - --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 +whitenoise[brotli]==6.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251 \ + --hash=sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146 +wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ + --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ + --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ + --hash=sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e \ + --hash=sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca \ + --hash=sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0 \ + --hash=sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb \ + --hash=sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487 \ + --hash=sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40 \ + --hash=sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c \ + --hash=sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060 \ + --hash=sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202 \ + --hash=sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41 \ + --hash=sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9 \ + --hash=sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b \ + --hash=sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664 \ + --hash=sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d \ + --hash=sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362 \ + --hash=sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00 \ + --hash=sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc \ + --hash=sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1 \ + --hash=sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267 \ + --hash=sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956 \ + --hash=sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966 \ + --hash=sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1 \ + --hash=sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228 \ + --hash=sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72 \ + --hash=sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d \ + --hash=sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292 \ + --hash=sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0 \ + --hash=sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0 \ + --hash=sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36 \ + --hash=sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c \ + --hash=sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5 \ + --hash=sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f \ + --hash=sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73 \ + --hash=sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b \ + --hash=sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2 \ + --hash=sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593 \ + --hash=sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39 \ + --hash=sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 \ + --hash=sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf \ + --hash=sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf \ + --hash=sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 \ + --hash=sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c \ + --hash=sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c \ + --hash=sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f \ + --hash=sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440 \ + --hash=sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465 \ + --hash=sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136 \ + --hash=sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b \ + --hash=sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8 \ + --hash=sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3 \ + --hash=sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8 \ + --hash=sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6 \ + --hash=sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e \ + --hash=sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f \ + --hash=sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c \ + --hash=sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e \ + --hash=sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8 \ + --hash=sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2 \ + --hash=sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020 \ + --hash=sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35 \ + --hash=sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d \ + --hash=sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3 \ + --hash=sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537 \ + --hash=sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809 \ + --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ + --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ + --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 xhtml2pdf==0.2.11 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 -zipp==3.16.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 zopfli==0.2.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0574372283befa5af98fb31407e1fe6822f2f9c437ef69e7fa260e49022d8a65 \ --hash=sha256:082f030b2b7d6d4597ac517816e499c63b92130aa8f4f74a3788ebaa5770f974 \ diff --git a/rocky/requirements.txt b/rocky/requirements.txt index da1c5d78a80..712c5900254 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -1,9 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ - --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a +anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ + --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f arabic-reshaper==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 @@ -15,9 +15,9 @@ asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ asn1crypto==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 -attrs==23.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ - --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 +attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ + --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 @@ -38,9 +38,9 @@ backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -beautifulsoup4==4.12.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da \ - --hash=sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a +beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ + --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208 \ --hash=sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48 \ @@ -153,183 +153,195 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.7.22 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082 \ - --hash=sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9 -cffi==1.15.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5 \ - --hash=sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef \ - --hash=sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104 \ - --hash=sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426 \ - --hash=sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405 \ - --hash=sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375 \ - --hash=sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a \ - --hash=sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e \ - --hash=sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc \ - --hash=sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf \ - --hash=sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185 \ - --hash=sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497 \ - --hash=sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3 \ - --hash=sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35 \ - --hash=sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c \ - --hash=sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83 \ - --hash=sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21 \ - --hash=sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca \ - --hash=sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984 \ - --hash=sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac \ - --hash=sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd \ - --hash=sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee \ - --hash=sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a \ - --hash=sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2 \ - --hash=sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192 \ - --hash=sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7 \ - --hash=sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585 \ - --hash=sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f \ - --hash=sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e \ - --hash=sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27 \ - --hash=sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b \ - --hash=sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e \ - --hash=sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e \ - --hash=sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d \ - --hash=sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c \ - --hash=sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415 \ - --hash=sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82 \ - --hash=sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02 \ - --hash=sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314 \ - --hash=sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325 \ - --hash=sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c \ - --hash=sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3 \ - --hash=sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914 \ - --hash=sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045 \ - --hash=sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d \ - --hash=sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9 \ - --hash=sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5 \ - --hash=sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2 \ - --hash=sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c \ - --hash=sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3 \ - --hash=sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2 \ - --hash=sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8 \ - --hash=sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d \ - --hash=sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d \ - --hash=sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9 \ - --hash=sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162 \ - --hash=sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76 \ - --hash=sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4 \ - --hash=sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e \ - --hash=sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9 \ - --hash=sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6 \ - --hash=sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b \ - --hash=sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01 \ - --hash=sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0 +certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ + --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ + --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ + --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ + --hash=sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab \ + --hash=sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520 \ + --hash=sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36 \ + --hash=sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743 \ + --hash=sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8 \ + --hash=sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed \ + --hash=sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684 \ + --hash=sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56 \ + --hash=sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324 \ + --hash=sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d \ + --hash=sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235 \ + --hash=sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e \ + --hash=sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088 \ + --hash=sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000 \ + --hash=sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7 \ + --hash=sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e \ + --hash=sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673 \ + --hash=sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c \ + --hash=sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe \ + --hash=sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2 \ + --hash=sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098 \ + --hash=sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8 \ + --hash=sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a \ + --hash=sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0 \ + --hash=sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b \ + --hash=sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896 \ + --hash=sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e \ + --hash=sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9 \ + --hash=sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2 \ + --hash=sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b \ + --hash=sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6 \ + --hash=sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404 \ + --hash=sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f \ + --hash=sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0 \ + --hash=sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4 \ + --hash=sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc \ + --hash=sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936 \ + --hash=sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba \ + --hash=sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872 \ + --hash=sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb \ + --hash=sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614 \ + --hash=sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1 \ + --hash=sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d \ + --hash=sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969 \ + --hash=sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b \ + --hash=sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4 \ + --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ + --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ + --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 -charset-normalizer==3.2.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96 \ - --hash=sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c \ - --hash=sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710 \ - --hash=sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706 \ - --hash=sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020 \ - --hash=sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252 \ - --hash=sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad \ - --hash=sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329 \ - --hash=sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a \ - --hash=sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f \ - --hash=sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6 \ - --hash=sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4 \ - --hash=sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a \ - --hash=sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46 \ - --hash=sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2 \ - --hash=sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23 \ - --hash=sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace \ - --hash=sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd \ - --hash=sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982 \ - --hash=sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10 \ - --hash=sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2 \ - --hash=sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea \ - --hash=sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09 \ - --hash=sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5 \ - --hash=sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149 \ - --hash=sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489 \ - --hash=sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9 \ - --hash=sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80 \ - --hash=sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592 \ - --hash=sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3 \ - --hash=sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6 \ - --hash=sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed \ - --hash=sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c \ - --hash=sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200 \ - --hash=sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a \ - --hash=sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e \ - --hash=sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d \ - --hash=sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6 \ - --hash=sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623 \ - --hash=sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669 \ - --hash=sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3 \ - --hash=sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa \ - --hash=sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9 \ - --hash=sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2 \ - --hash=sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f \ - --hash=sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1 \ - --hash=sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4 \ - --hash=sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a \ - --hash=sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8 \ - --hash=sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3 \ - --hash=sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029 \ - --hash=sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f \ - --hash=sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959 \ - --hash=sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22 \ - --hash=sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7 \ - --hash=sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952 \ - --hash=sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346 \ - --hash=sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e \ - --hash=sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d \ - --hash=sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299 \ - --hash=sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd \ - --hash=sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a \ - --hash=sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3 \ - --hash=sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037 \ - --hash=sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94 \ - --hash=sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c \ - --hash=sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858 \ - --hash=sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a \ - --hash=sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449 \ - --hash=sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c \ - --hash=sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918 \ - --hash=sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1 \ - --hash=sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c \ - --hash=sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac \ - --hash=sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa +charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ + --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ + --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ + --hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \ + --hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \ + --hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \ + --hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \ + --hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \ + --hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \ + --hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \ + --hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \ + --hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \ + --hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \ + --hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \ + --hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \ + --hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \ + --hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \ + --hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \ + --hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \ + --hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \ + --hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \ + --hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \ + --hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \ + --hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \ + --hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \ + --hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \ + --hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \ + --hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \ + --hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \ + --hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \ + --hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \ + --hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \ + --hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \ + --hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \ + --hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \ + --hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \ + --hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \ + --hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \ + --hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \ + --hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \ + --hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \ + --hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \ + --hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \ + --hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \ + --hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \ + --hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \ + --hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \ + --hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \ + --hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \ + --hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \ + --hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \ + --hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \ + --hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \ + --hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \ + --hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \ + --hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \ + --hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \ + --hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \ + --hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \ + --hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \ + --hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \ + --hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \ + --hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \ + --hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \ + --hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \ + --hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \ + --hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \ + --hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \ + --hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \ + --hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \ + --hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \ + --hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \ + --hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \ + --hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \ + --hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \ + --hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \ + --hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \ + --hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \ + --hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \ + --hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \ + --hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \ + --hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \ + --hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \ + --hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \ + --hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \ + --hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \ + --hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \ + --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ + --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ + --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==41.0.6 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:068bc551698c234742c40049e46840843f3d98ad7ce265fd2bd4ec0d11306596 \ - --hash=sha256:0f27acb55a4e77b9be8d550d762b0513ef3fc658cd3eb15110ebbcbd626db12c \ - --hash=sha256:2132d5865eea673fe6712c2ed5fb4fa49dba10768bb4cc798345748380ee3660 \ - --hash=sha256:3288acccef021e3c3c10d58933f44e8602cf04dba96d9796d70d537bb2f4bbc4 \ - --hash=sha256:35f3f288e83c3f6f10752467c48919a7a94b7d88cc00b0668372a0d2ad4f8ead \ - --hash=sha256:398ae1fc711b5eb78e977daa3cbf47cec20f2c08c5da129b7a296055fbb22aed \ - --hash=sha256:422e3e31d63743855e43e5a6fcc8b4acab860f560f9321b0ee6269cc7ed70cc3 \ - --hash=sha256:48783b7e2bef51224020efb61b42704207dde583d7e371ef8fc2a5fb6c0aabc7 \ - --hash=sha256:4d03186af98b1c01a4eda396b137f29e4e3fb0173e30f885e27acec8823c1b09 \ - --hash=sha256:5daeb18e7886a358064a68dbcaf441c036cbdb7da52ae744e7b9207b04d3908c \ - --hash=sha256:60e746b11b937911dc70d164060d28d273e31853bb359e2b2033c9e93e6f3c43 \ - --hash=sha256:742ae5e9a2310e9dade7932f9576606836ed174da3c7d26bc3d3ab4bd49b9f65 \ - --hash=sha256:7e00fb556bda398b99b0da289ce7053639d33b572847181d6483ad89835115f6 \ - --hash=sha256:85abd057699b98fce40b41737afb234fef05c67e116f6f3650782c10862c43da \ - --hash=sha256:8efb2af8d4ba9dbc9c9dd8f04d19a7abb5b49eab1f3694e7b5a16a5fc2856f5c \ - --hash=sha256:ae236bb8760c1e55b7a39b6d4d32d2279bc6c7c8500b7d5a13b6fb9fc97be35b \ - --hash=sha256:afda76d84b053923c27ede5edc1ed7d53e3c9f475ebaf63c68e69f1403c405a8 \ - --hash=sha256:b27a7fd4229abef715e064269d98a7e2909ebf92eb6912a9603c7e14c181928c \ - --hash=sha256:b648fe2a45e426aaee684ddca2632f62ec4613ef362f4d681a9a6283d10e079d \ - --hash=sha256:c5a550dc7a3b50b116323e3d376241829fd326ac47bc195e04eb33a8170902a9 \ - --hash=sha256:da46e2b5df770070412c46f87bac0849b8d685c5f2679771de277a422c7d0b86 \ - --hash=sha256:f39812f70fc5c71a15aa3c97b2bbe213c3f2a460b79bd21c40d033bb34a9bf36 \ - --hash=sha256:ff369dd19e8fe0528b02e8df9f2aeb2479f89b1270d90f96a63500afe9af5cae +cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ + --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ + --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ + --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ + --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ + --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ + --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ + --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ + --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ + --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ + --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ + --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ + --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ + --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ + --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ + --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ + --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ + --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ + --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ + --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ + --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ + --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ + --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ + --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ + --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ + --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ + --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ + --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ + --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ + --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ + --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ + --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 cssselect2==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 @@ -339,25 +351,25 @@ cwe==1.6 ; python_version >= "3.8" and python_version < "4.0" \ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -django-appconf==1.0.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:ae9f864ee1958c815a965ed63b3fba4874eec13de10236ba063a788f9a17389d \ - --hash=sha256:be3db0be6c81fa84742000b89a81c016d70ae66a7ccb620cdef592b1f1a6aaa4 +django-appconf==1.0.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993 \ + --hash=sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.8" and python_version < "4.0" django-csp==3.7 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a \ --hash=sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727 -django-environ==0.10.0 ; python_version >= "3.8" and python_version < "4" \ - --hash=sha256:510f8c9c1d0a38b0815f91504270c29440a0cf44fab07f55942fa8d31bbb9be6 \ - --hash=sha256:b3559a91439c9d774a9e0c1ced872364772c612cdf6dc919506a2b13f7a77225 -django-formtools==2.4.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:21f8d5dac737f1e636fa8a0a10969c1c32f525a6dfa27c29592827ba70d9643a \ - --hash=sha256:49ea8a64ddef4728a558bf5f8f622c0f4053b979edcf193bf00dd80432ab2f12 -django-otp==1.2.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:007a6354dabb3a1a54574bf73abf045ebbde0bb8734a38e2ed7845ba450f345e \ - --hash=sha256:90765d5dac238a719f9550ac05681dd6307f513a81a10b6adb879b4abc6bc1a3 -django-password-validators==1.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:16ee1d32d2ee9c0852f0c77f6e004fc115f58150d48cdca7d23ea269b22d0f30 \ - --hash=sha256:5f5fffb7d69ec3d9a81d41b159a8089e7f734b4715f93dd1814edd6e11a21796 +django-environ==0.11.2 ; python_version >= "3.8" and python_version < "4" \ + --hash=sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05 \ + --hash=sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be +django-formtools==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93 \ + --hash=sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a +django-otp==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060 \ + --hash=sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c +django-password-validators==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7175aefa6e86dc002dd3539327bf2d752097651704927dc409a669259e0d2195 \ + --hash=sha256:f243a82957e9b17a0c7cf5580f9d7588471cb6530c2dce7ee4e1222dddfe5768 django-phonenumber-field==6.4.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:72a3e7a3e7493bf2a12c07a3bc77ce89813acc16592bf04d0eee3b5a452097ed \ --hash=sha256:a31b4f05ac0ff898661516c84940f83adb5cdcf0ae4b9b1d31bb8ad3ff345b58 @@ -365,129 +377,131 @@ django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc django-tagulous==1.3.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:4570ffa774bbced191f670079fea4e72a350ee91b2a937d5eb08e535ca47f1a6 \ - --hash=sha256:6be4313069bffcaef8b657573ddc82f82e77da1a0bdb31175b1649c2411c0b0a +django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ + --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8e0f1c2c2786b5c0e39fe1afce24c926040fad47c8ea8ad30aaf1188df29fc41 \ - --hash=sha256:e1d37c51ad26186de355cbcec16613ebdabfa9689bbade9c538835205a8abbe9 +django==4.2.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14 \ + --hash=sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984 djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -dnspython==2.4.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:57c6fbaaeaaf39c891292012060beb141791735dbb4004798328fc2c467402d8 \ - --hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984 -drf-standardized-errors==0.12.5 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20db40c4f4288c36046ee6e0e3727539fbe3306d60f6f1aa88326629022f69c4 \ - --hash=sha256:46eda8c7442730a7d0069f6213ea588e5c386dc2858a14b9a3ae08e78fd8975d -exceptiongroup==1.1.3 ; python_version >= "3.8" and python_version < "3.11" \ - --hash=sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9 \ - --hash=sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3 -fonttools[woff]==4.46.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:13ac0cba2fc63fa4b232f2a7971f35f35c6eaf10bd1271fa96d4ce6253a8acfd \ - --hash=sha256:156ae342a1ed1fe38e180de471e98fbf5b2b6ae280fa3323138569c4ca215844 \ - --hash=sha256:1a9f9cdd7ef63d1b8ac90db335762451452426b3207abd79f60da510cea62da5 \ - --hash=sha256:1c9937c4dd1061afd22643389445fabda858af5e805860ec3082a4bc07c7a720 \ - --hash=sha256:25852f0c63df0af022f698464a4a80f7d1d5bd974bcd22f995f6b4ad198e32dd \ - --hash=sha256:2ae45716c27a41807d58a9f3f59983bdc8c0a46cb259e4450ab7e196253a9853 \ - --hash=sha256:2c23c59d321d62588620f2255cf951270bf637d88070f38ed8b5e5558775b86c \ - --hash=sha256:2cf923a4a556ab4cc4c52f69a4a2db624cf5a2cf360394368b40c5152fe3321e \ - --hash=sha256:2d0eba685938c603f2f648dfc0aadbf8c6a4fe1c7ca608c2970a6ef39e00f254 \ - --hash=sha256:3033b55f401a622de2630b3982234d97219d89b058607b87927eccb0f922313c \ - --hash=sha256:49ea0983e55fd7586a809787cd4644a7ae471e53ab8ddc016f9093b400e32646 \ - --hash=sha256:5200b01f463d97cc2b7ff8a1e3584151f4413e98cb8419da5f17d1dbb84cc214 \ - --hash=sha256:5b627ed142398ea9202bd752c04311592558964d1a765fb2f78dc441a05633f4 \ - --hash=sha256:6d4a4ebcc76e30898ff3296ea786491c70e183f738319ae2629e0d44f17ece42 \ - --hash=sha256:795150d5edc595e1a2cfb3d65e8f4f3d027704fc2579f8990d381bef6b188eb6 \ - --hash=sha256:7b460720ce81773da1a3e7cc964c48e1e11942b280619582a897fa0117b56a62 \ - --hash=sha256:7b5636f5706d49f13b6d610fe54ee662336cdf56b5a6f6683c0b803e23d826d2 \ - --hash=sha256:8485cc468288e213f31afdaf1fdda3c79010f542559fbba936a54f4644df2570 \ - --hash=sha256:87c214197712cc14fd2a4621efce2a9c501a77041232b789568149a8a3161517 \ - --hash=sha256:87c3299da7da55394fb324349db0ede38114a46aafd0e7dfcabfecd28cdd94c3 \ - --hash=sha256:89c2c520f9492844ecd6316d20c6c7a157b5c0cb73a1411b3db28ee304f30122 \ - --hash=sha256:8be6adfa4e15977075278dd0a0bae74dec59be7b969b5ceed93fb86af52aa5be \ - --hash=sha256:8bee9f4fc8c99824a424ae45c789ee8c67cb84f8e747afa7f83b7d3cef439c3b \ - --hash=sha256:982f69855ac258260f51048d9e0c53c5f19881138cc7ca06deb38dc4b97404b6 \ - --hash=sha256:9e6aeb5c340416d11a3209d75c48d13e72deea9e1517837dd1522c1fd1f17c11 \ - --hash=sha256:a0e94244ec24a940ecfbe5b31c975c8a575d5ed2d80f9a280ce3b21fa5dc9c34 \ - --hash=sha256:a4a50a1dfad7f7ba5ca3f99cc73bf5cdac67ceade8e4b355a877521f20ad1b63 \ - --hash=sha256:a9fa52ef8fd14d7eb3d813e1451e7ace3e1eebfa9b7237d3f81fee8f3de6a114 \ - --hash=sha256:adab73618d0a328b203a0e242b3eba60a2b5662d9cb2bd16ed9c52af8a7d86af \ - --hash=sha256:c506e3d3a9e898caee4dc094f34b49c5566870d5a2d1ca2125f0a9f35ecc2205 \ - --hash=sha256:c779f8701deedf41908f287aeb775b8a6f59875ad1002b98ac6034ae4ddc1b7b \ - --hash=sha256:c94564b1f3b5dd87e73577610d85115b1936edcc596deaf84a31bbe70e17456b \ - --hash=sha256:c9a0e422ab79e5cb2b47913be6a4b5fd20c4c7ac34a24f3691a4e099e965e0b8 \ - --hash=sha256:ca9eceebe70035b057ce549e2054cad73e95cac3fe91a9d827253d1c14618204 \ - --hash=sha256:ce199227ce7921eaafdd4f96536f16b232d6b580ce74ce337de544bf06cb2752 \ - --hash=sha256:d00fc63131dcac6b25f50a5a129758438317e54e3ce5587163f7058de4b0e933 \ - --hash=sha256:d3d7b96aba96e05e8c911ce2dfc5acc6a178b8f44f6aa69371ab91aa587563da \ - --hash=sha256:d4e69e2c7f93b695d2e6f18f709d501d945f65c1d237dafaabdd23cd935a5276 \ - --hash=sha256:e26e7fb908ae4f622813e7cb32cd2db6c24e3122bb3b98f25e832a2fe0e7e228 \ - --hash=sha256:e5b7905fd68eacb7cc56a13139da5c312c45baae6950dd00b02563c54508a041 \ - --hash=sha256:f5f1423a504ccc329efb5aa79738de83d38c072be5308788dde6bd419969d7f5 \ - --hash=sha256:f8bc3973ed58893c4107993e0a7ae34901cb572b5e798249cbef35d30801ffd4 -googleapis-common-protos==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:69f9bbcc6acde92cab2db95ce30a70bd2b81d20b12eff3f1aabaffcbe8a93918 \ - --hash=sha256:e73ebb404098db405ba95d1e1ae0aa91c3e15a71da031a2eeb6b2e23e7bc3708 -granian==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00b20f2e9bb634acc2d886d5cf80efa2151648bbccbf0096a719bb8daa460fb0 \ - --hash=sha256:01f9fcd0b1a3126f59a5205ddb0688b91cf9c4ce9511cb3bee3bd2b8e9404638 \ - --hash=sha256:0338b371b9d894500fd83ec5d1d2f33ef775084bf5d28f5fecd25e092375b0a7 \ - --hash=sha256:0c54219c9929bcda408386d60983d7fb8dae14e4e7fb802e3fc0ce92a99bb472 \ - --hash=sha256:172de2f6c4bb231e560c8679a8ecd56995cb8554f3ab3e9f600a5c2aebb27917 \ - --hash=sha256:1cb392572df79f75775be0298d2aa62c8a573c49261b56bc012e29a052c1b4d2 \ - --hash=sha256:1e8129b1e1bbdcfa407d07ee861a3d201a5b916e0f0bcba7c7aaa22c0b17488d \ - --hash=sha256:1fa1412ac05ab8bfa1000cfea15fa04aaeaa81ac03d41c4142a021b0c0ec21b4 \ - --hash=sha256:27710fdc406dcada02c0b52f0d6375bfbb1f4b198b23d5000d4925e756751a01 \ - --hash=sha256:293e3a406506c04741c1055b49f892aec5677ca060318b34360ea977087c8196 \ - --hash=sha256:2a1075fe58ab638def736dd4a6edacb2a3c042bbf8dbfdaec7584aa7bcffc01c \ - --hash=sha256:336364e7d4fca955eb2dc7b0a24fcc7c32ce3b80f496d3c97191015d22d62c11 \ - --hash=sha256:369e4aaed10996aca4cb5fdd98b3339a6b6d2e7389a079aecd8acafe954f5b24 \ - --hash=sha256:374443b4fcc7dad1d420fdf298a43858ca0cbec9a0d0048696abb9c043a7b0ae \ - --hash=sha256:3813e900aca1d62091254b7c9340eb33d74c6b133b32efd70834a48265111f03 \ - --hash=sha256:3ce74ec097dd92dd01632211b6a656db56683afb862f02a267b69fc09f702339 \ - --hash=sha256:4d8b18149d63a5a92d3cffb8bee115d3a59137cafaeb962b7e45e984f43b5c0d \ - --hash=sha256:50349d6ab546d7cbe88c34e08c1e16cae5ac70f48e08b2b9a237f30709f35bf8 \ - --hash=sha256:578ca2cb2117c96836e0b2573ffd345f358b8da0647ef29893eaf837840e2a5d \ - --hash=sha256:57fb2036a199037373bfef7bebf3452ca147501b1d57581853874bce61a72eb7 \ - --hash=sha256:5d76198b6d876732f2389d4eed83e33b00c8bf40380d0963d26a6ccb8918606a \ - --hash=sha256:6949c7594798d201baa62e9eccb4c7662c75ed87dbbb28bed585c5078e82a882 \ - --hash=sha256:6a092ba050e9f593384aa0c200d7c57a249ae5a3bbf89a788bb1ac9147320584 \ - --hash=sha256:6e54d153616cc3be59306cde6a4e55fcc07e45403f309a5c5fe8681e85069814 \ - --hash=sha256:7237071088cbaa8fff88f025062885019f30d5465a11f60d5172c17e44a93e4f \ - --hash=sha256:815d5833549957e68d7d429453c58575aa80440795a6fb1accbc0c46d6a32b3e \ - --hash=sha256:828ac7d024f5ada284d2c815a74c07f26bde2856b613b673d992b6da2ba50245 \ - --hash=sha256:9efc78ada79079d0ce2f6e61abb71528671572a858d44a2b85268346795cf3a7 \ - --hash=sha256:a21c117d4bd78055ba253a53ce7bef0c539b6a042731289f3fb78b1e2377bcea \ - --hash=sha256:a3173482ce292a31f19d7497941401a648fb727a5ffaa2d979ea8866ccacd7a3 \ - --hash=sha256:a52d665e5eb160d66d1c0ab001180e5dd1b386d687c6c03981038c9e21d42a61 \ - --hash=sha256:a912e5bcc144c25299e22713bcf4faafa6a0af2a81b8702ba88fa5f5646dedc2 \ - --hash=sha256:be03ab8dddd7acffcb6e758081973e6bd517b7eb4d3f83046220e55e26bff02a \ - --hash=sha256:c3e0a1975f3a51659233b7d6671f6718477fbfc8208f9051a28617af9ea655c3 \ - --hash=sha256:c6c0e0c0e3dd1bffd61a14f2ab13e5c4798d4802fb2253893eb9a98713dfb3d9 \ - --hash=sha256:cbc7ad1ecdd2f71c3a9bfe8e04d6e2b466d1f32388a323468526aae420cd0e93 \ - --hash=sha256:cced24e44041a8e0e07265a9a1f3227ef64171716b6204770c6e3e1e0842becf \ - --hash=sha256:ce968248ca1b8b66ae12440e9283b5a65b58264b3c5a3b3a6d90035e186e964f \ - --hash=sha256:cf014963ec58482a16bf95d1ddd86216a2c1f7208f7bf00ff3ecc8804f0d9750 \ - --hash=sha256:cf6b6d5ed34bf6d9018949c51bcf829c0b11ef25c90b90f6d28330e3dfeaa1b9 \ - --hash=sha256:d1cffd1bba4dc3e29278d42ed7c6237229c293d12c3e346dd14bed89de9b4dc2 \ - --hash=sha256:d476c10452ccd27e09b4fdbe24f92d6d1cd78f2acd4da98ca6d1606bff08f18a \ - --hash=sha256:d89690242217879ddb5635ed340bd67877026dca68d995382ed37c90a14ca2f0 \ - --hash=sha256:d938e81cd59d0de89654ad0a081a44c2858e05afac5f9266fd2cc85f4f0735f9 \ - --hash=sha256:db818af6305f941ea516bb73aa703d61a57f83affa47b5d530ff6f19c7d97983 \ - --hash=sha256:e3b30894a5c8e21d41dc1eba052b6cf569fb5dbf27988bc68bf5384c845bf147 \ - --hash=sha256:e5414dc976266b482330ecafcf94656d9042b6d0f33f030c7dd30a976faa3fd9 \ - --hash=sha256:e588864e6bd3479a28c96536b200e257932074f5326b2f67f535091767402993 \ - --hash=sha256:e8e60d57cf3bad9cc84a75d0b6c9ca5e97f5b571a4c47705c5390f13ac98e783 \ - --hash=sha256:e9ff2a0b113dee5dd01636ebf409e215141bd3449c7522011c9688479a40a6f7 \ - --hash=sha256:ea9c05dd7190cd6105abb7b4b2bc6dc5bd13daa3827c463cc887ef0c83b6280e \ - --hash=sha256:ef34bd268566dc4cae942fe30651461005526635c24df42f9600b2a199dff39c \ - --hash=sha256:f80e1722c657fd5a7054ada83e0cd98aeb5d59a0b796a92027c9587cace0e1c3 \ - --hash=sha256:fdc6c4417460efba6ea7e4563371d43e49f336655c295e0b9b4e5daef5f63db0 \ - --hash=sha256:ff196a3d5e6c8d18f12d0115bbfcb2f7312ab0681672cdc00ab14c5cb1a47464 +dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ + --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 +drf-standardized-errors==0.12.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ + --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d +exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ + --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ + --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 +fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ + --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ + --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ + --hash=sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae \ + --hash=sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b \ + --hash=sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc \ + --hash=sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b \ + --hash=sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07 \ + --hash=sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70 \ + --hash=sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71 \ + --hash=sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df \ + --hash=sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6 \ + --hash=sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1 \ + --hash=sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670 \ + --hash=sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7 \ + --hash=sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6 \ + --hash=sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635 \ + --hash=sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899 \ + --hash=sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50 \ + --hash=sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9 \ + --hash=sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085 \ + --hash=sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb \ + --hash=sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c \ + --hash=sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3 \ + --hash=sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184 \ + --hash=sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8 \ + --hash=sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506 \ + --hash=sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c \ + --hash=sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c \ + --hash=sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b \ + --hash=sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0 \ + --hash=sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c \ + --hash=sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa \ + --hash=sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f \ + --hash=sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4 \ + --hash=sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c \ + --hash=sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1 \ + --hash=sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946 \ + --hash=sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d \ + --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ + --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ + --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 +googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ + --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 +granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ + --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ + --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ + --hash=sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3 \ + --hash=sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056 \ + --hash=sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce \ + --hash=sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032 \ + --hash=sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde \ + --hash=sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81 \ + --hash=sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149 \ + --hash=sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa \ + --hash=sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020 \ + --hash=sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3 \ + --hash=sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7 \ + --hash=sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815 \ + --hash=sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720 \ + --hash=sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2 \ + --hash=sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a \ + --hash=sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9 \ + --hash=sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf \ + --hash=sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b \ + --hash=sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810 \ + --hash=sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7 \ + --hash=sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82 \ + --hash=sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43 \ + --hash=sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12 \ + --hash=sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926 \ + --hash=sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5 \ + --hash=sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb \ + --hash=sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897 \ + --hash=sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f \ + --hash=sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5 \ + --hash=sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb \ + --hash=sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f \ + --hash=sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1 \ + --hash=sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711 \ + --hash=sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803 \ + --hash=sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208 \ + --hash=sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df \ + --hash=sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc \ + --hash=sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386 \ + --hash=sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed \ + --hash=sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9 \ + --hash=sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c \ + --hash=sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f \ + --hash=sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8 \ + --hash=sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d \ + --hash=sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879 \ + --hash=sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe \ + --hash=sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664 \ + --hash=sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a \ + --hash=sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167 \ + --hash=sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4 \ + --hash=sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda \ + --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ + --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ + --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ @@ -537,114 +551,115 @@ grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ html5lib==1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f -idna==3.4 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \ - --hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2 -importlib-metadata==6.8.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ - --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 -importlib-resources==6.0.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:134832a506243891221b88b4ae1213327eea96ceb4e407a00d790bb0626f45cf \ - --hash=sha256:4359457e42708462b9626a04657c6208ad799ceb41e5c58c57ffa0e6a098a5d4 -jsonschema-specifications==2023.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1 \ - --hash=sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb -jsonschema==4.19.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb \ - --hash=sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f -lxml==4.9.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3 \ - --hash=sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d \ - --hash=sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a \ - --hash=sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120 \ - --hash=sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305 \ - --hash=sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287 \ - --hash=sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23 \ - --hash=sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52 \ - --hash=sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f \ - --hash=sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4 \ - --hash=sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584 \ - --hash=sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f \ - --hash=sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693 \ - --hash=sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef \ - --hash=sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5 \ - --hash=sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02 \ - --hash=sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc \ - --hash=sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7 \ - --hash=sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da \ - --hash=sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a \ - --hash=sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40 \ - --hash=sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8 \ - --hash=sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd \ - --hash=sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601 \ - --hash=sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c \ - --hash=sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be \ - --hash=sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2 \ - --hash=sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c \ - --hash=sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129 \ - --hash=sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc \ - --hash=sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2 \ - --hash=sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1 \ - --hash=sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7 \ - --hash=sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d \ - --hash=sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477 \ - --hash=sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d \ - --hash=sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e \ - --hash=sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7 \ - --hash=sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2 \ - --hash=sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574 \ - --hash=sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf \ - --hash=sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b \ - --hash=sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98 \ - --hash=sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12 \ - --hash=sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42 \ - --hash=sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35 \ - --hash=sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d \ - --hash=sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce \ - --hash=sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d \ - --hash=sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f \ - --hash=sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db \ - --hash=sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4 \ - --hash=sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694 \ - --hash=sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac \ - --hash=sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2 \ - --hash=sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7 \ - --hash=sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96 \ - --hash=sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d \ - --hash=sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b \ - --hash=sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a \ - --hash=sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13 \ - --hash=sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340 \ - --hash=sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6 \ - --hash=sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458 \ - --hash=sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c \ - --hash=sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c \ - --hash=sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9 \ - --hash=sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432 \ - --hash=sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991 \ - --hash=sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69 \ - --hash=sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf \ - --hash=sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb \ - --hash=sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b \ - --hash=sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833 \ - --hash=sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76 \ - --hash=sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85 \ - --hash=sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e \ - --hash=sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50 \ - --hash=sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8 \ - --hash=sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4 \ - --hash=sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b \ - --hash=sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5 \ - --hash=sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190 \ - --hash=sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7 \ - --hash=sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa \ - --hash=sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0 \ - --hash=sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9 \ - --hash=sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0 \ - --hash=sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b \ - --hash=sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5 \ - --hash=sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7 \ - --hash=sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4 +idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ + --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f +importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ + --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b +importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ + --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ + --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 +jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ + --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c +jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ + --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 +lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ + --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ + --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ + --hash=sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5 \ + --hash=sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545 \ + --hash=sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2 \ + --hash=sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd \ + --hash=sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a \ + --hash=sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771 \ + --hash=sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba \ + --hash=sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20 \ + --hash=sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b \ + --hash=sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac \ + --hash=sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7 \ + --hash=sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be \ + --hash=sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28 \ + --hash=sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9 \ + --hash=sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622 \ + --hash=sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43 \ + --hash=sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197 \ + --hash=sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20 \ + --hash=sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2 \ + --hash=sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97 \ + --hash=sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48 \ + --hash=sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d \ + --hash=sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d \ + --hash=sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7 \ + --hash=sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d \ + --hash=sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca \ + --hash=sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc \ + --hash=sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4 \ + --hash=sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225 \ + --hash=sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663 \ + --hash=sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2 \ + --hash=sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590 \ + --hash=sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c \ + --hash=sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46 \ + --hash=sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58 \ + --hash=sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16 \ + --hash=sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013 \ + --hash=sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c \ + --hash=sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02 \ + --hash=sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec \ + --hash=sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3 \ + --hash=sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573 \ + --hash=sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899 \ + --hash=sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10 \ + --hash=sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2 \ + --hash=sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a \ + --hash=sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37 \ + --hash=sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5 \ + --hash=sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745 \ + --hash=sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9 \ + --hash=sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7 \ + --hash=sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868 \ + --hash=sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c \ + --hash=sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b \ + --hash=sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45 \ + --hash=sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd \ + --hash=sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644 \ + --hash=sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4 \ + --hash=sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e \ + --hash=sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192 \ + --hash=sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be \ + --hash=sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab \ + --hash=sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d \ + --hash=sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85 \ + --hash=sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9 \ + --hash=sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307 \ + --hash=sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd \ + --hash=sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e \ + --hash=sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8 \ + --hash=sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964 \ + --hash=sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69 \ + --hash=sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683 \ + --hash=sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5 \ + --hash=sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979 \ + --hash=sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8 \ + --hash=sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e \ + --hash=sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53 \ + --hash=sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7 \ + --hash=sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722 \ + --hash=sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d \ + --hash=sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66 \ + --hash=sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1 \ + --hash=sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137 \ + --hash=sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56 \ + --hash=sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a \ + --hash=sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0 \ + --hash=sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23 \ + --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ + --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ + --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -693,64 +708,78 @@ opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < " oscrypto==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 -phonenumbers==8.13.19 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:38180247697240ccedd74dec4bfbdbc22bb108b9c5f991f270ca3e41395e6f96 \ - --hash=sha256:ba542f20f6dc83be8f127f240f9b5b7e7c1dec42aceff1879400d4dc0c781d81 -pillow==10.1.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d \ - --hash=sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de \ - --hash=sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616 \ - --hash=sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839 \ - --hash=sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099 \ - --hash=sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a \ - --hash=sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219 \ - --hash=sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106 \ - --hash=sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b \ - --hash=sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412 \ - --hash=sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b \ - --hash=sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7 \ - --hash=sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2 \ - --hash=sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7 \ - --hash=sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14 \ - --hash=sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f \ - --hash=sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27 \ - --hash=sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57 \ - --hash=sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262 \ - --hash=sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28 \ - --hash=sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610 \ - --hash=sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172 \ - --hash=sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273 \ - --hash=sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e \ - --hash=sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d \ - --hash=sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818 \ - --hash=sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f \ - --hash=sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9 \ - --hash=sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01 \ - --hash=sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7 \ - --hash=sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651 \ - --hash=sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312 \ - --hash=sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80 \ - --hash=sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666 \ - --hash=sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061 \ - --hash=sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b \ - --hash=sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992 \ - --hash=sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593 \ - --hash=sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4 \ - --hash=sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db \ - --hash=sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba \ - --hash=sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd \ - --hash=sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e \ - --hash=sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212 \ - --hash=sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb \ - --hash=sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2 \ - --hash=sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34 \ - --hash=sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256 \ - --hash=sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f \ - --hash=sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2 \ - --hash=sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38 \ - --hash=sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996 \ - --hash=sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a \ - --hash=sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793 +phonenumbers==8.13.29 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ + --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf +pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ + --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ + --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ + --hash=sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869 \ + --hash=sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e \ + --hash=sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04 \ + --hash=sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9 \ + --hash=sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e \ + --hash=sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe \ + --hash=sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef \ + --hash=sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56 \ + --hash=sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa \ + --hash=sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f \ + --hash=sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f \ + --hash=sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e \ + --hash=sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a \ + --hash=sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2 \ + --hash=sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2 \ + --hash=sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5 \ + --hash=sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a \ + --hash=sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2 \ + --hash=sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213 \ + --hash=sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563 \ + --hash=sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591 \ + --hash=sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c \ + --hash=sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2 \ + --hash=sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb \ + --hash=sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757 \ + --hash=sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0 \ + --hash=sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452 \ + --hash=sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad \ + --hash=sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01 \ + --hash=sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f \ + --hash=sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5 \ + --hash=sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61 \ + --hash=sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e \ + --hash=sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b \ + --hash=sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068 \ + --hash=sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9 \ + --hash=sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588 \ + --hash=sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483 \ + --hash=sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f \ + --hash=sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67 \ + --hash=sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7 \ + --hash=sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311 \ + --hash=sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6 \ + --hash=sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72 \ + --hash=sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6 \ + --hash=sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129 \ + --hash=sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13 \ + --hash=sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67 \ + --hash=sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c \ + --hash=sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516 \ + --hash=sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e \ + --hash=sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e \ + --hash=sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364 \ + --hash=sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023 \ + --hash=sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1 \ + --hash=sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04 \ + --hash=sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d \ + --hash=sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a \ + --hash=sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7 \ + --hash=sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb \ + --hash=sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4 \ + --hash=sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e \ + --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ + --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ + --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e @@ -768,148 +797,124 @@ protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 -psycopg2==2.9.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084 \ - --hash=sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1 \ - --hash=sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866 \ - --hash=sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9 \ - --hash=sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5 \ - --hash=sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723 \ - --hash=sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5 \ - --hash=sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2 \ - --hash=sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2 \ - --hash=sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8 \ - --hash=sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8 +psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ + --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ + --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ + --hash=sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa \ + --hash=sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a \ + --hash=sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693 \ + --hash=sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372 \ + --hash=sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e \ + --hash=sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59 \ + --hash=sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156 \ + --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ + --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ + --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.14.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:056ea7cc3c92a7d2a14b5bc9c9fa14efa794d9f05b9794206d089d06d3433dc7 \ - --hash=sha256:0653fb9fc2fa6787f2fa08631314ab7fc8070307bd344bf9471d1b7207c24623 \ - --hash=sha256:076edc972b68a66870cec41a4efdd72a6b655c4098a232314b02d2bfa3bfa157 \ - --hash=sha256:0a3e51c2be472b7867eb0c5d025b91400c2b73a0823b89d4303a9097e2ec6655 \ - --hash=sha256:0c7f8e8a7cf8e81ca7d44bea4f181783630959d41b4b51d2f74bc50f348a090f \ - --hash=sha256:10904368261e4509c091cbcc067e5a88b070ed9a10f7ad78f3029c175487490f \ - --hash=sha256:113752a55a8eaece2e4ac96bc8817f134c2c23477e477d085ba89e3aa0f4dc44 \ - --hash=sha256:12e05a76b223577a4696c76d7a6b36a0ccc491ffb3c6a8cf92d8001d93ddfd63 \ - --hash=sha256:136bc7247e97a921a020abbd6ef3169af97569869cd6eff41b6a15a73c44ea9b \ - --hash=sha256:1582f01eaf0537a696c846bea92082082b6bfc1103a88e777e983ea9fbdc2a0f \ - --hash=sha256:1767bd3f6370458e60c1d3d7b1d9c2751cc1ad743434e8ec84625a610c8b9195 \ - --hash=sha256:1e2979dc80246e18e348de51246d4c9b410186ffa3c50e77924bec436b1e36cb \ - --hash=sha256:1ea992659c03c3ea811d55fc0a997bec9dde863a617cc7b25cfde69ef32e55af \ - --hash=sha256:1f2d4516c32255782153e858f9a900ca6deadfb217fd3fb21bb2b60b4e04d04d \ - --hash=sha256:2494d20e4c22beac30150b4be3b8339bf2a02ab5580fa6553ca274bc08681a65 \ - --hash=sha256:260692420028319e201b8649b13ac0988974eeafaaef95d0dfbf7120c38dc000 \ - --hash=sha256:2646f8270f932d79ba61102a15ea19a50ae0d43b314e22b3f8f4b5fabbfa6e38 \ - --hash=sha256:27828f0227b54804aac6fb077b6bb48e640b5435fdd7fbf0c274093a7b78b69c \ - --hash=sha256:2bc736725f9bd18a60eec0ed6ef9b06b9785454c8d0105f2be16e4d6274e63d0 \ - --hash=sha256:2c08ac60c3caa31f825b5dbac47e4875bd4954d8f559650ad9e0b225eaf8ed0c \ - --hash=sha256:2c83892c7bf92b91d30faca53bb8ea21f9d7e39f0ae4008ef2c2f91116d0464a \ - --hash=sha256:354db020b1f8f11207b35360b92d95725621eb92656725c849a61e4b550f4acc \ - --hash=sha256:364dba61494e48f01ef50ae430e392f67ee1ee27e048daeda0e9d21c3ab2d609 \ - --hash=sha256:37dad73a2f82975ed563d6a277fd9b50e5d9c79910c4aec787e2d63547202315 \ - --hash=sha256:38113856c7fad8c19be7ddd57df0c3e77b1b2336459cb03ee3903ce9d5e236ce \ - --hash=sha256:38aed5a1bbc3025859f56d6a32f6e53ca173283cb95348e03480f333b1091e7d \ - --hash=sha256:3ad083df8fe342d4d8d00cc1d3c1a23f0dc84fce416eb301e69f1ddbbe124d3f \ - --hash=sha256:3c1bf1a7b05a65d3b37a9adea98e195e0081be6b17ca03a86f92aeb8b110f468 \ - --hash=sha256:3d1dde10bd9962b1434053239b1d5490fc31a2b02d8950a5f731bc584c7a5a0f \ - --hash=sha256:44aaf1a07ad0824e407dafc637a852e9a44d94664293bbe7d8ee549c356c8882 \ - --hash=sha256:44afa3c18d45053fe8d8228950ee4c8eaf3b5a7f3b64963fdeac19b8342c987f \ - --hash=sha256:4a70d23eedd88a6484aa79a732a90e36701048a1509078d1b59578ef0ea2cdf5 \ - --hash=sha256:4aa89919fbd8a553cd7d03bf23d5bc5deee622e1b5db572121287f0e64979476 \ - --hash=sha256:4cc6bb11f4e8e5ed91d78b9880774fbc0856cb226151b0a93b549c2b26a00c19 \ - --hash=sha256:536e1f58419e1ec35f6d1310c88496f0d60e4f182cacb773d38076f66a60b149 \ - --hash=sha256:5402ee0f61e7798ea93a01b0489520f2abfd9b57b76b82c93714c4318c66ca06 \ - --hash=sha256:56814b41486e2d712a8bc02a7b1f17b87fa30999d2323bbd13cf0e52296813a1 \ - --hash=sha256:5b73441a1159f1fb37353aaefb9e801ab35a07dd93cb8177504b25a317f4215a \ - --hash=sha256:61beaa79d392d44dc19d6f11ccd824d3cccb865c4372157c40b92533f8d76dd0 \ - --hash=sha256:6c2d118d1b6c9e2d577e215567eedbe11804c3aafa76d39ec1f8bc74e918fd07 \ - --hash=sha256:6e2f9d76c00e805d47f19c7a96a14e4135238a7551a18bfd89bb757993fd0933 \ - --hash=sha256:71ed769b58d44e0bc2701aa59eb199b6665c16e8a5b8b4a84db01f71580ec448 \ - --hash=sha256:7349f99f1ef8b940b309179733f2cad2e6037a29560f1b03fdc6aa6be0a8d03c \ - --hash=sha256:75f3f534f33651b73f4d3a16d0254de096f43737d51e981478d580f4b006b427 \ - --hash=sha256:76fc18653a5c95e5301a52d1b5afb27c9adc77175bf00f73e94f501caf0e05ad \ - --hash=sha256:7cb0c397f29688a5bd2c0dbd44451bc44ebb9b22babc90f97db5ec3e5bb69977 \ - --hash=sha256:7cc24728a1a9cef497697e53b3d085fb4d3bc0ef1ef4d9b424d9cf808f52c146 \ - --hash=sha256:7e63a56eb7fdee1587d62f753ccd6d5fa24fbeea57a40d9d8beaef679a24bdd6 \ - --hash=sha256:832d16f248ca0cc96929139734ec32d21c67669dcf8a9f3f733c85054429c012 \ - --hash=sha256:8488e973547e8fb1b4193fd9faf5236cf1b7cd5e9e6dc7ff6b4d9afdc4c720cb \ - --hash=sha256:849cff945284c577c5f621d2df76ca7b60f803cc8663ff01b778ad0af0e39bb9 \ - --hash=sha256:88ec906eb2d92420f5b074f59cf9e50b3bb44f3cb70e6512099fdd4d88c2f87c \ - --hash=sha256:8d3b9c91eeb372a64ec6686c1402afd40cc20f61a0866850f7d989b6bf39a41a \ - --hash=sha256:8f5624f0f67f2b9ecaa812e1dfd2e35b256487566585160c6c19268bf2ffeccc \ - --hash=sha256:905a12bf088d6fa20e094f9a477bf84bd823651d8b8384f59bcd50eaa92e6a52 \ - --hash=sha256:92486a04d54987054f8b4405a9af9d482e5100d6fe6374fc3303015983fc8bda \ - --hash=sha256:96eb10ef8920990e703da348bb25fedb8b8653b5966e4e078e5be382b430f9e0 \ - --hash=sha256:96fb679c7ca12a512d36d01c174a4fbfd912b5535cc722eb2c010c7b44eceb8e \ - --hash=sha256:98d8b3932f1a369364606417ded5412c4ffb15bedbcf797c31317e55bd5d920e \ - --hash=sha256:9dbab442a8d9ca918b4ed99db8d89d11b1f067a7dadb642476ad0889560dac79 \ - --hash=sha256:9ef3e2e407e4cad2df3c89488a761ed1f1c33f3b826a2ea9a411b0a7d1cccf1b \ - --hash=sha256:9ff737f24b34ed26de62d481ef522f233d3c5927279f6b7229de9b0deb3f76b5 \ - --hash=sha256:a1a39fecb5f0b19faee9a8a8176c805ed78ce45d760259a4ff3d21a7daa4dfc1 \ - --hash=sha256:a402ae1066be594701ac45661278dc4a466fb684258d1a2c434de54971b006ca \ - --hash=sha256:a5c51460ede609fbb4fa883a8fe16e749964ddb459966d0518991ec02eb8dfb9 \ - --hash=sha256:a8ca13480ce16daad0504be6ce893b0ee8ec34cd43b993b754198a89e2787f7e \ - --hash=sha256:ab4a2381005769a4af2ffddae74d769e8a4aae42e970596208ec6d615c6fb080 \ - --hash=sha256:aeafc7f5bbddc46213707266cadc94439bfa87ecf699444de8be044d6d6eb26f \ - --hash=sha256:aecd5ed096b0e5d93fb0367fd8f417cef38ea30b786f2501f6c34eabd9062c38 \ - --hash=sha256:af452e69446fadf247f18ac5d153b1f7e61ef708f23ce85d8c52833748c58075 \ - --hash=sha256:af46f0b7a1342b49f208fed31f5a83b8495bb14b652f621e0a6787d2f10f24ee \ - --hash=sha256:b02b5e1f54c3396c48b665050464803c23c685716eb5d82a1d81bf81b5230da4 \ - --hash=sha256:b28996872b48baf829ee75fa06998b607c66a4847ac838e6fd7473a6b2ab68e7 \ - --hash=sha256:b7692f539a26265cece1e27e366df5b976a6db6b1f825a9e0466395b314ee48b \ - --hash=sha256:ba44fad1d114539d6a1509966b20b74d2dec9a5b0ee12dd7fd0a1bb7b8785e5f \ - --hash=sha256:bf15145b1f8056d12c67255cd3ce5d317cd4450d5ee747760d8d088d85d12a2d \ - --hash=sha256:c3dc2920cc96f9aa40c6dc54256e436cc95c0a15562eb7bd579e1811593c377e \ - --hash=sha256:c54af5069da58ea643ad34ff32fd6bc4eebb8ae0fef9821cd8919063e0aeeaab \ - --hash=sha256:c5ea0153482e5b4d601c25465771c7267c99fddf5d3f3bdc238ef930e6d051cf \ - --hash=sha256:c9ffd823c46e05ef3eb28b821aa7bc501efa95ba8880b4a1380068e32c5bed47 \ - --hash=sha256:ca55c9671bb637ce13d18ef352fd32ae7aba21b4402f300a63f1fb1fd18e0364 \ - --hash=sha256:caa94726791e316f0f63049ee00dff3b34a629b0d099f3b594770f7d0d8f1f56 \ - --hash=sha256:cc956f78651778ec1ab105196e90e0e5f5275884793ab67c60938c75bcca3989 \ - --hash=sha256:ccbf355b7276593c68fa824030e68cb29f630c50e20cb11ebb0ee450ae6b3d08 \ - --hash=sha256:cf08b43d1d5d1678f295f0431a4a7e1707d4652576e1d0f8914b5e0213bfeee5 \ - --hash=sha256:d06c78074646111fb01836585f1198367b17d57c9f427e07aaa9ff499003e58d \ - --hash=sha256:d2b53e1f851a2b406bbb5ac58e16c4a5496038eddd856cc900278fa0da97f3fc \ - --hash=sha256:d41df8e10b094640a6b234851b624b76a41552f637b9fb34dc720b9fe4ef3be4 \ - --hash=sha256:d7abd17a838a52140e3aeca271054e321226f52df7e0a9f0da8f91ea123afe98 \ - --hash=sha256:de52ddfa6e10e892d00f747bf7135d7007302ad82e243cf16d89dd77b03b649d \ - --hash=sha256:df33902464410a1f1a0411a235f0a34e7e129f12cb6340daca0f9d1390f5fe10 \ - --hash=sha256:e16aaf788f1de5a85c8f8fcc9c1ca1dd7dd52b8ad30a7889ca31c7c7606615b8 \ - --hash=sha256:e3ad4968711fb379a67c8c755beb4dae8b721a83737737b7bcee27c05400b047 \ - --hash=sha256:e483b8b913fcd3b48badec54185c150cb7ab0e6487914b84dc7cde2365e0c892 \ - --hash=sha256:e71f666c3bf019f2490a47dddb44c3ccea2e69ac882f7495c68dc14d4065eac2 \ - --hash=sha256:ea1498ce4491236d1cffa0eee9ad0968b6ecb0c1cd711699c5677fc689905f00 \ - --hash=sha256:eaab9dc009e22726c62fe3b850b797e7f0e7ba76d245284d1064081f512c7226 \ - --hash=sha256:ec79dbe23702795944d2ae4c6925e35a075b88acd0d20acde7c77a817ebbce94 \ - --hash=sha256:f1b92e72babfd56585c75caf44f0b15258c58e6be23bc33f90885cebffde3400 \ - --hash=sha256:f1f46700402312bdc31912f6fc17f5ecaaaa3bafe5487c48f07c800052736289 \ - --hash=sha256:f518eac285c9632be337323eef9824a856f2680f943a9b68ac41d5f5bad7df7c \ - --hash=sha256:f86f20a9d5bee1a6ede0f2757b917bac6908cde0f5ad9fcb3606db1e2968bcf5 \ - --hash=sha256:f8fc652c354d3362e2932a79d5ac4bbd7170757a41a62c4fe0f057d29f10bebb \ - --hash=sha256:fe272a72c7ed29f84c42fedd2d06c2f9858dc0c00dae3b34ba15d6d8ae0fbaaf \ - --hash=sha256:fe863491664c6720d65ae438d4efaa5eca766565a53adb53bf14bc3246c72fe0 -pydantic-settings==2.0.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945 \ - --hash=sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625 -pydantic==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0b8be5413c06aadfbe56f6dc1d45c9ed25fd43264414c571135c97dd77c2bedb \ - --hash=sha256:dc5244a8939e0d9a68f1f1b5f550b2e1c879912033b1becbedb315accc75441b +pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ + --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ + --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ + --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ + --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ + --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ + --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ + --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ + --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ + --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ + --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ + --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ + --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ + --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ + --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ + --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ + --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ + --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ + --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ + --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ + --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ + --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ + --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ + --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ + --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ + --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ + --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ + --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ + --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ + --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ + --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ + --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ + --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ + --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ + --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ + --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ + --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ + --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ + --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ + --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ + --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ + --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ + --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ + --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ + --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ + --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ + --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ + --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ + --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ + --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ + --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ + --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ + --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ + --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ + --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ + --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ + --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ + --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ + --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ + --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ + --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ + --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ + --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ + --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ + --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ + --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ + --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ + --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ + --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ + --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ + --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ + --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ + --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ + --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ + --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ + --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ + --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ + --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ + --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ + --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ + --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf pydyf==0.8.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a -pyhanko-certvalidator==0.23.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:287d7c51d8ff4a1f8d9b8909f9d26f435f00d4cdd37351745b444768a668a6a5 \ - --hash=sha256:424d9070e92096ab088ae1bf5b027a0fd6adb48a3b5ff446d53b14d1dbc00338 -pyhanko==0.20.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2b693e20a3b06ef97dc3a375e9f99bf78db60cc3ce4bf4d05ad043f5df38d105 \ - --hash=sha256:d494f4f59672b182587f0ae55b76ef4296a94bda5c1ca9c2e771e58237e130db +pyhanko-certvalidator==0.26.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ + --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 +pyhanko==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ + --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:67f6bb7acd8fdbcf7e7a7d5319d12b8de100f5f94538d6e5647aaec3eb7c7dde \ - --hash=sha256:9fab275fea57c9e5b2416035d13d867a459ebe36294a4c39a3d0bb45a7404bad +pypdf==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ + --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a pyphen==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa @@ -919,12 +924,12 @@ pypng==0.20220715.0 ; python_version >= "3.8" and python_version < "4.0" \ python-bidi==0.4.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -pytz==2023.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588 \ - --hash=sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb +python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a +pytz==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ + --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -1003,9 +1008,9 @@ rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1 \ --hash=sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f \ --hash=sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51 -referencing==0.30.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf \ - --hash=sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0 +referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ + --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ @@ -1079,116 +1084,118 @@ rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3 \ --hash=sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807 \ --hash=sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65 -rpds-py==0.9.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f \ - --hash=sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238 \ - --hash=sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f \ - --hash=sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f \ - --hash=sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c \ - --hash=sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298 \ - --hash=sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260 \ - --hash=sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1 \ - --hash=sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d \ - --hash=sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7 \ - --hash=sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f \ - --hash=sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876 \ - --hash=sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe \ - --hash=sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be \ - --hash=sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32 \ - --hash=sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3 \ - --hash=sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18 \ - --hash=sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d \ - --hash=sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620 \ - --hash=sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b \ - --hash=sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae \ - --hash=sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496 \ - --hash=sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1 \ - --hash=sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67 \ - --hash=sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f \ - --hash=sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764 \ - --hash=sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196 \ - --hash=sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e \ - --hash=sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846 \ - --hash=sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b \ - --hash=sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d \ - --hash=sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26 \ - --hash=sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e \ - --hash=sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044 \ - --hash=sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c \ - --hash=sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d \ - --hash=sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad \ - --hash=sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d \ - --hash=sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab \ - --hash=sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920 \ - --hash=sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e \ - --hash=sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872 \ - --hash=sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3 \ - --hash=sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611 \ - --hash=sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4 \ - --hash=sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c \ - --hash=sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193 \ - --hash=sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af \ - --hash=sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10 \ - --hash=sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd \ - --hash=sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f \ - --hash=sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b \ - --hash=sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945 \ - --hash=sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752 \ - --hash=sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c \ - --hash=sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387 \ - --hash=sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8 \ - --hash=sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d \ - --hash=sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931 \ - --hash=sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03 \ - --hash=sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502 \ - --hash=sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f \ - --hash=sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55 \ - --hash=sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82 \ - --hash=sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798 \ - --hash=sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a \ - --hash=sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b \ - --hash=sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa \ - --hash=sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f \ - --hash=sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192 \ - --hash=sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020 \ - --hash=sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7 \ - --hash=sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1 \ - --hash=sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386 \ - --hash=sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90 \ - --hash=sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f \ - --hash=sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe \ - --hash=sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596 \ - --hash=sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f \ - --hash=sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387 \ - --hash=sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16 \ - --hash=sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e \ - --hash=sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b \ - --hash=sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6 \ - --hash=sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1 \ - --hash=sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de \ - --hash=sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0 \ - --hash=sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3 \ - --hash=sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468 \ - --hash=sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e \ - --hash=sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd \ - --hash=sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324 \ - --hash=sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c \ - --hash=sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535 \ - --hash=sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55 \ - --hash=sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6 \ - --hash=sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07 -setuptools==68.1.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d \ - --hash=sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b +rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ + --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ + --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ + --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ + --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ + --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ + --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ + --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ + --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ + --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ + --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ + --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ + --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ + --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ + --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ + --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ + --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ + --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ + --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ + --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ + --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ + --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ + --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ + --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ + --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ + --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ + --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ + --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ + --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ + --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ + --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ + --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ + --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ + --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ + --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ + --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ + --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ + --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ + --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ + --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ + --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ + --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ + --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ + --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ + --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ + --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ + --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ + --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ + --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ + --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ + --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ + --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ + --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ + --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ + --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ + --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ + --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ + --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ + --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ + --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ + --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ + --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ + --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ + --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ + --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ + --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ + --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ + --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ + --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ + --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ + --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ + --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ + --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ + --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ + --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ + --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ + --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ + --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ + --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ + --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ + --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ + --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ + --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ + --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ + --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ + --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ + --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ + --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ + --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ + --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ + --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ + --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ + --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ + --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ + --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ + --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ + --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ + --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ + --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ + --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.4.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8 \ - --hash=sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea +soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ + --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlparse==0.4.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \ --hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c @@ -1200,27 +1207,27 @@ svglib==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ tinycss2==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 -toolz==0.12.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2059bd4148deb1884bb0eb770a3cde70e7f954cfbbdc2285f1f2de01fd21eb6f \ - --hash=sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194 +toolz==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ + --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d typer==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.7.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36 \ - --hash=sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2 -tzdata==2023.3 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ - --hash=sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a \ - --hash=sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda -tzlocal==5.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:46eb99ad4bdb71f3f72b7d24f4267753e240944ecfc16f25d2719ba89827a803 \ - --hash=sha256:f3596e180296aaf2dbd97d124fe76ae3a0e3d32b258447de7b939b3fd4be992f -uritools==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:d122d394ed6e6e15ac0fddba6a5b19e9fa204e7797507815cbfb0e1455ac0475 \ - --hash=sha256:efc5c3a6de05404850685a8d3f34da8476b56aa3516fbf8eff5c8704c7a2826f -urllib3==2.0.7 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84 \ - --hash=sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e +typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ + --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd +tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ + --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ + --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 +tzlocal==5.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ + --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e +uritools==4.0.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ + --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e +urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ + --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ @@ -1334,96 +1341,91 @@ watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d -weasyprint==60.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:55227e5e44f5f34bc9cec651329bd38d063ef7d29151d4b058d4af1ca943d4a7 \ - --hash=sha256:56b9812280118357b0f63b1efe18199e08343d4a56a3393c1d475ab878cea26a +weasyprint==60.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ + --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 -whitenoise[brotli]==6.5.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:15fe60546ac975b58e357ccaeb165a4ca2d0ab697e48450b8f0307ca368195a8 \ - --hash=sha256:16468e9ad2189f09f4a8c635a9031cc9bb2cdbc8e5e53365407acf99f7ade9ec -wrapt==1.15.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0 \ - --hash=sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420 \ - --hash=sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a \ - --hash=sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c \ - --hash=sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079 \ - --hash=sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923 \ - --hash=sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f \ - --hash=sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1 \ - --hash=sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8 \ - --hash=sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86 \ - --hash=sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0 \ - --hash=sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364 \ - --hash=sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e \ - --hash=sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c \ - --hash=sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e \ - --hash=sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c \ - --hash=sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727 \ - --hash=sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff \ - --hash=sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e \ - --hash=sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29 \ - --hash=sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7 \ - --hash=sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72 \ - --hash=sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475 \ - --hash=sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a \ - --hash=sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317 \ - --hash=sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2 \ - --hash=sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd \ - --hash=sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640 \ - --hash=sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98 \ - --hash=sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248 \ - --hash=sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e \ - --hash=sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d \ - --hash=sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec \ - --hash=sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1 \ - --hash=sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e \ - --hash=sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9 \ - --hash=sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92 \ - --hash=sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb \ - --hash=sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094 \ - --hash=sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46 \ - --hash=sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29 \ - --hash=sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd \ - --hash=sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705 \ - --hash=sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8 \ - --hash=sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975 \ - --hash=sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb \ - --hash=sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e \ - --hash=sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b \ - --hash=sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418 \ - --hash=sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019 \ - --hash=sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1 \ - --hash=sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba \ - --hash=sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6 \ - --hash=sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2 \ - --hash=sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3 \ - --hash=sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7 \ - --hash=sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752 \ - --hash=sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416 \ - --hash=sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f \ - --hash=sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1 \ - --hash=sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc \ - --hash=sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145 \ - --hash=sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee \ - --hash=sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a \ - --hash=sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7 \ - --hash=sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b \ - --hash=sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653 \ - --hash=sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0 \ - --hash=sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90 \ - --hash=sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29 \ - --hash=sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6 \ - --hash=sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034 \ - --hash=sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09 \ - --hash=sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559 \ - --hash=sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639 +whitenoise[brotli]==6.6.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251 \ + --hash=sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146 +wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ + --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ + --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ + --hash=sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e \ + --hash=sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca \ + --hash=sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0 \ + --hash=sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb \ + --hash=sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487 \ + --hash=sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40 \ + --hash=sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c \ + --hash=sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060 \ + --hash=sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202 \ + --hash=sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41 \ + --hash=sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9 \ + --hash=sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b \ + --hash=sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664 \ + --hash=sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d \ + --hash=sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362 \ + --hash=sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00 \ + --hash=sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc \ + --hash=sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1 \ + --hash=sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267 \ + --hash=sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956 \ + --hash=sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966 \ + --hash=sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1 \ + --hash=sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228 \ + --hash=sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72 \ + --hash=sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d \ + --hash=sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292 \ + --hash=sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0 \ + --hash=sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0 \ + --hash=sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36 \ + --hash=sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c \ + --hash=sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5 \ + --hash=sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f \ + --hash=sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73 \ + --hash=sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b \ + --hash=sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2 \ + --hash=sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593 \ + --hash=sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39 \ + --hash=sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389 \ + --hash=sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf \ + --hash=sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf \ + --hash=sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89 \ + --hash=sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c \ + --hash=sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c \ + --hash=sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f \ + --hash=sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440 \ + --hash=sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465 \ + --hash=sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136 \ + --hash=sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b \ + --hash=sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8 \ + --hash=sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3 \ + --hash=sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8 \ + --hash=sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6 \ + --hash=sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e \ + --hash=sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f \ + --hash=sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c \ + --hash=sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e \ + --hash=sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8 \ + --hash=sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2 \ + --hash=sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020 \ + --hash=sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35 \ + --hash=sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d \ + --hash=sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3 \ + --hash=sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537 \ + --hash=sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809 \ + --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ + --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ + --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 xhtml2pdf==0.2.11 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 -zipp==3.16.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0 \ - --hash=sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147 +zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ + --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 zopfli==0.2.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0574372283befa5af98fb31407e1fe6822f2f9c437ef69e7fa260e49022d8a65 \ --hash=sha256:082f030b2b7d6d4597ac517816e499c63b92130aa8f4f74a3788ebaa5770f974 \ From fea21f9828cbecee4f6982494eba87422f104a7e Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Tue, 30 Jan 2024 13:36:05 +0100 Subject: [PATCH 02/85] Use --diff-filter=U instead of --staged in fix-poetry-merge-conflict (#2398) --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 543926ac4a0..2767dad73fd 100644 --- a/Makefile +++ b/Makefile @@ -132,7 +132,7 @@ poetry-dependencies: done fix-poetry-merge-conflict: - for path in `git diff --staged --name-only | grep "pyproject.toml" | cut -d / -f 1`; do \ + for path in `git diff --diff-filter=U --name-only | grep "poetry.lock" | cut -d / -f 1`; do \ echo $$path; \ git restore --staged $$path/poetry.lock $$path/requirements*; \ git checkout --theirs $$path/poetry.lock $$path/requirements*; \ From 84fcfbac3efb1b461754a696dac37539a6756814 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Wed, 31 Jan 2024 11:41:01 +0100 Subject: [PATCH 03/85] Feat/more csp checks (#2025) Signed-off-by: Donny Peeters Co-authored-by: Donny Peeters <46660228+Donnype@users.noreply.github.com> Co-authored-by: Donny Peeters --- .../bits/check_csp_header/check_csp_header.py | 57 ++++++++-- octopoes/tests/test_bit_csp_header.py | 101 ++++++++++++++++++ 2 files changed, 149 insertions(+), 9 deletions(-) create mode 100644 octopoes/tests/test_bit_csp_header.py diff --git a/octopoes/bits/check_csp_header/check_csp_header.py b/octopoes/bits/check_csp_header/check_csp_header.py index 834d63916f8..a0a072b7cda 100644 --- a/octopoes/bits/check_csp_header/check_csp_header.py +++ b/octopoes/bits/check_csp_header/check_csp_header.py @@ -1,3 +1,4 @@ +import ipaddress import re from typing import Dict, Iterator, List @@ -5,6 +6,8 @@ from octopoes.models.ooi.findings import Finding, KATFindingType from octopoes.models.types import HTTPHeader +NON_DECIMAL_FILTER = re.compile(r"[^\d.]+") + def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: header = input_ooi @@ -16,9 +19,6 @@ def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> if "http://" in header.value: findings.append("Http should not be used in the CSP settings of an HTTP Header.") - if "127.0.0.1" in header.value: - findings.append("127.0.0.1 should not be used in the CSP settings of an HTTP Header.") - # checks for a wildcard in domains in the header # 1: one or more non-whitespace # 2: wildcard @@ -30,23 +30,30 @@ def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> if "unsafe-inline" in header.value or "unsafe-eval" in header.value or "unsafe-hashes" in header.value: findings.append( - "Unsafe-inline, unsafe-eval and unsafe-hashes should not be used in the CSP settings of an HTTP Header." + "unsafe-inline, unsafe-eval and unsafe-hashes should not be used in the CSP settings of an HTTP Header." ) if "frame-src" not in header.value and "default-src" not in header.value and "child-src" not in header.value: - findings.append("Frame-src has not been defined or does not have a fallback.") + findings.append("frame-src has not been defined or does not have a fallback.") if "script-src" not in header.value and "default-src" not in header.value: - findings.append("Script-src has not been defined or does not have a fallback.") + findings.append("script-src has not been defined or does not have a fallback.") + + if "base-uri" not in header.value: + findings.append("base-uri has not been defined, default-src does not apply.") if "frame-ancestors" not in header.value: - findings.append("Frame-ancestors has not been defined.") + findings.append("frame-ancestors has not been defined.") if "default-src" not in header.value: - findings.append("Default-src has not been defined.") + findings.append("default-src has not been defined.") policies = [policy.strip().split(" ") for policy in header.value.split(";")] for policy in policies: + if len(policy) < 2: + findings.append("CSP setting has no value.") + continue + if policy[0] in ["frame-src", "frame-ancestors"] and not _source_valid(policy[1:]): findings.append(f"{policy[0]} has not been correctly defined.") @@ -57,9 +64,28 @@ def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> if (policy[0] == "default-src" or policy[0] == "object-src" or policy[0] == "script-src") and "data:" in policy: findings.append( - "'Data:' should not be used in the value of default-src, object-src and script-src in the CSP settings." + "'data:' should not be used in the value of default-src, object-src and script-src in the CSP settings." ) + if policy[0].endswith("-uri") and ( + "unsafe-eval" in policy[2:] + or "unsafe-hashes" in policy[2:] + or "unsafe-inline" in policy[2:] + or "strict-dynamic" in policy[2:] + ): + findings.append(f"{policy[0]} has illogical values.") + + if policy[1].strip() == "*": + findings.append("A wildcard source should not be used in the value of any type in the CSP settings.") + if policy[1].strip() in ("http:", "https:"): + findings.append( + "a blanket protocol source should not be used in the value of any type in the CSP settings." + ) + for source in policy[1:]: + if not _ip_valid(source): + findings.append( + "Private, local, reserved, multicast, loopback ips should not be allowed in the CSP settings." + ) if findings: description: str = "List of CSP findings:" for index, finding in enumerate(findings): @@ -72,6 +98,19 @@ def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> ) +def _ip_valid(source: str) -> bool: + "Check if there are IP's in this source, return False if the address found was to be non global. Ignores non ips" + ip = NON_DECIMAL_FILTER.sub("", source) + if ip: + try: + ip = ipaddress.ip_address(ip) + if ip.is_private or ip.is_loopback or ip.is_link_local or ip.is_multicast or ip.is_reserved: + return False + except ValueError: + pass + return True + + def _create_kat_finding(header: Reference, kat_id: str, description: str) -> Iterator[OOI]: finding_type = KATFindingType(id=kat_id) yield finding_type diff --git a/octopoes/tests/test_bit_csp_header.py b/octopoes/tests/test_bit_csp_header.py new file mode 100644 index 00000000000..7b80287f754 --- /dev/null +++ b/octopoes/tests/test_bit_csp_header.py @@ -0,0 +1,101 @@ +from bits.check_csp_header.check_csp_header import run + +from octopoes.models.ooi.web import HTTPHeader + + +def test_https_hsts(http_resource_https): + results = [ + list(run(HTTPHeader(resource=http_resource_https.reference, key=key, value=value), [], {})) + for key, value in [ + ("Content-Type", "text/html"), + ("Content-security-poliCY", "text/html"), + ("content-security-policy", "http://abc.com"), + ("content-security-policy", "https://abc.com"), + ("content-security-policy", "https://*.com"), + ("content-security-policy", "https://a.com; ...; media-src 'self'; media-src 10.10.10.10;"), + ("content-security-policy", "unsafe-inline-uri * strict-dynamic; test http: 127.0.0.1"), + ] + ] + + assert results[0] == [] + assert len(results[1]) == 2 + assert results[1][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[1][1].description + == """List of CSP findings: + 1. frame-src has not been defined or does not have a fallback. + 2. script-src has not been defined or does not have a fallback. + 3. base-uri has not been defined, default-src does not apply. + 4. frame-ancestors has not been defined. + 5. default-src has not been defined. + 6. CSP setting has no value.""" + ) + + assert results[2][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[2][1].description + == """List of CSP findings: + 1. Http should not be used in the CSP settings of an HTTP Header. + 2. frame-src has not been defined or does not have a fallback. + 3. script-src has not been defined or does not have a fallback. + 4. base-uri has not been defined, default-src does not apply. + 5. frame-ancestors has not been defined. + 6. default-src has not been defined. + 7. CSP setting has no value.""" + ) + + assert results[3][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[3][1].description + == """List of CSP findings: + 1. frame-src has not been defined or does not have a fallback. + 2. script-src has not been defined or does not have a fallback. + 3. base-uri has not been defined, default-src does not apply. + 4. frame-ancestors has not been defined. + 5. default-src has not been defined. + 6. CSP setting has no value.""" + ) + + assert results[4][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[4][1].description + == """List of CSP findings: + 1. The wildcard * for the scheme and host part of any URL should never be used in CSP settings. + 2. frame-src has not been defined or does not have a fallback. + 3. script-src has not been defined or does not have a fallback. + 4. base-uri has not been defined, default-src does not apply. + 5. frame-ancestors has not been defined. + 6. default-src has not been defined. + 7. CSP setting has no value.""" + ) + + assert results[5][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[5][1].description + == """List of CSP findings: + 1. frame-src has not been defined or does not have a fallback. + 2. script-src has not been defined or does not have a fallback. + 3. base-uri has not been defined, default-src does not apply. + 4. frame-ancestors has not been defined. + 5. default-src has not been defined. + 6. CSP setting has no value. + 7. CSP setting has no value. + 8. Private, local, reserved, multicast, loopback ips should not be allowed in the CSP settings. + 9. CSP setting has no value.""" + ) + + assert results[6][0].id == "KAT-CSP-VULNERABILITIES" + assert ( + results[6][1].description + == """List of CSP findings: + 1. unsafe-inline, unsafe-eval and unsafe-hashes should not be used in the CSP settings of an HTTP Header. + 2. frame-src has not been defined or does not have a fallback. + 3. script-src has not been defined or does not have a fallback. + 4. base-uri has not been defined, default-src does not apply. + 5. frame-ancestors has not been defined. + 6. default-src has not been defined. + 7. unsafe-inline-uri has illogical values. + 8. A wildcard source should not be used in the value of any type in the CSP settings. + 9. a blanket protocol source should not be used in the value of any type in the CSP settings. + 10. Private, local, reserved, multicast, loopback ips should not be allowed in the CSP settings.""" + ) From a7e7af0c6f16a7f3fbc35c977d44131bb2524121 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Wed, 31 Jan 2024 16:24:36 +0100 Subject: [PATCH 04/85] Remove everything related to old crux (#2403) Co-authored-by: Jan Klopper --- .../octopoes_rtest-crux-regression.yml | 35 -- boefjes/boefjes/job_handler.py | 2 +- .../developer_documentation/octopoes.md | 14 +- .../debuggingtroubleshooting.rst | 4 +- mula/.ci/.env.test | 1 - octopoes/.ci/ci-crux.env | 10 - octopoes/.ci/ci-multinode.env | 11 - octopoes/.ci/ci.env | 4 +- octopoes/.ci/docker-compose-crux.yml | 69 --- octopoes/.ci/docker-compose.yml | 65 +-- octopoes/Makefile | 11 +- octopoes/docs/source/conf.py | 51 -- octopoes/docs/source/img/kat_data_example.png | Bin 110881 -> 0 bytes .../docs/source/img/kat_data_structure.png | Bin 94630 -> 0 bytes octopoes/docs/source/img/kat_query_plan.png | Bin 113044 -> 0 bytes octopoes/docs/source/img/kat_ref_example.png | Bin 128111 -> 0 bytes octopoes/docs/source/img/kat_system.png | Bin 65639 -> 0 bytes octopoes/docs/source/img/models.odg | Bin 48513 -> 0 bytes octopoes/docs/source/index.rst | 16 - octopoes/docs/source/readme.md | 464 ------------------ octopoes/octopoes/api/router.py | 12 +- octopoes/octopoes/config/settings.py | 15 +- octopoes/octopoes/core/app.py | 28 +- .../octopoes/repositories/ooi_repository.py | 42 +- .../origin_parameter_repository.py | 14 +- .../repositories/origin_repository.py | 13 +- .../repositories/scan_profile_repository.py | 26 +- octopoes/octopoes/tasks/tasks.py | 4 +- octopoes/octopoes/xtdb/client.py | 14 +- octopoes/octopoes/xtdb/exceptions.py | 4 - octopoes/octopoes/xtdb/query_builder.py | 4 +- .../octopoes/xtdb/related_field_generator.py | 2 +- octopoes/tests/conftest.py | 23 +- .../tests/integration/test_api_connector.py | 5 - .../tests/integration/test_ooi_repository.py | 4 - .../tests/integration/test_xtdb_client.py | 4 - octopoes/tests/robot/01_scan_profiles.robot | 7 +- octopoes/tests/robot/02_list_objects.robot | 8 - .../tests/robot/03_deletion_propagation.robot | 7 - .../tests/robot/04_save_declaration.robot | 7 - octopoes/tests/robot/05_bits.robot | 9 - .../robot/06_scan_profile_inheritance.robot | 7 +- octopoes/tests/robot/07_bit_configs.robot | 10 - octopoes/tests/robot/07_rerun_bits.robot | 16 +- octopoes/tests/robot/08_findings.robot | 7 +- octopoes/tests/robot/robot.resource | 21 +- octopoes/tests/robot/variables.py | 21 - octopoes/tests/test_api.py | 50 +- octopoes/tests/test_ooi_repository.py | 19 +- octopoes/tests/test_query_builder_new.py | 8 +- octopoes/tests/test_reference_node.py | 90 ++-- .../tests/test_scan_profile_repository.py | 8 +- octopoes/tools/run_bit.py | 2 +- rocky/.ci/.env.test | 3 +- rocky/.ci/docker-compose.yml | 4 +- rocky/assets/vendors/graph/js/graph-render.js | 22 +- 56 files changed, 194 insertions(+), 1103 deletions(-) delete mode 100644 .github/workflows/octopoes_rtest-crux-regression.yml delete mode 100644 octopoes/.ci/ci-crux.env delete mode 100644 octopoes/.ci/ci-multinode.env delete mode 100644 octopoes/.ci/docker-compose-crux.yml delete mode 100644 octopoes/docs/source/conf.py delete mode 100644 octopoes/docs/source/img/kat_data_example.png delete mode 100644 octopoes/docs/source/img/kat_data_structure.png delete mode 100644 octopoes/docs/source/img/kat_query_plan.png delete mode 100644 octopoes/docs/source/img/kat_ref_example.png delete mode 100644 octopoes/docs/source/img/kat_system.png delete mode 100644 octopoes/docs/source/img/models.odg delete mode 100644 octopoes/docs/source/index.rst delete mode 100644 octopoes/docs/source/readme.md delete mode 100644 octopoes/tests/robot/variables.py diff --git a/.github/workflows/octopoes_rtest-crux-regression.yml b/.github/workflows/octopoes_rtest-crux-regression.yml deleted file mode 100644 index 5649371b4b3..00000000000 --- a/.github/workflows/octopoes_rtest-crux-regression.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Octopoes Run the robot framework integration tests with Crux (regression) - -on: - push: - paths: - - octopoes/** - pull_request: - paths: - - octopoes/** - -jobs: - rtest: - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v4 - - - uses: actions/setup-python@v5 - with: - python-version: '3.8' - cache: 'pip' # caching pip dependencies - - - name: Install requirements-dev.txt - run: pip install -r requirements-dev.txt - working-directory: ./octopoes - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - id: buildx - - - name: Run robot tests on Crux (regression) - run: make rtest-crux - env: - DOCKER_BUILDKIT: 1 - working-directory: ./octopoes diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index c70161561b3..4a56c6b25f5 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -36,7 +36,7 @@ def _find_ooi_in_past(reference: Reference, connector: OctopoesAPIConnector, lookback_days: int = 4) -> OOI: - # Source OOIs may not live in crux since we currently have TTLs in place (to be removed soon). + # Source OOIs may not live in XTDB since we currently have TTLs in place (to be removed soon). valid_time = datetime.now(timezone.utc) for days_in_past in range(lookback_days): diff --git a/docs/source/developer_documentation/octopoes.md b/docs/source/developer_documentation/octopoes.md index e9d9384a965..ce8703d34c3 100644 --- a/docs/source/developer_documentation/octopoes.md +++ b/docs/source/developer_documentation/octopoes.md @@ -264,23 +264,23 @@ end Listener ->>- EventManager: #nbsp ``` -## Crux / XTDB -[Crux](https://opencrux.com/main/index.html) is the central database of OOIs within KAT. Crux is a graph-database that can store objects (schemalessly), while providing object history and audit-trail functionality out-of-the-box. The term *bitemporal* means it tracks every object on 2 time axis: valid-time and transaction-time. +## XTDB +[XTDB](https://xtdb.com) is the central database of OOIs within KAT. XTDB is a graph-database that can store objects (schemalessly), while providing object history and audit-trail functionality out-of-the-box. The term *bitemporal* means it tracks every object on 2 time axis: valid-time and transaction-time. - Valid-time means the state of an object at a certain time *X* (mutable). - Transaction-time means the state of an object with all transactions-processed until time *Y* (immutable) This is especially useful for forensics-type queries like: What was the state of an object at time *X (valid-time)*, with the information we had at time *Y (transaction-time)*. -Good to know: Crux tracks the history of each object by its **primary key**. +Good to know: XTDB tracks the history of each object by its **primary key**. -[Read more about Crux bitemporality](https://opencrux.com/articles/bitemporality.html) +[Read more about XTDB bitemporality](https://v1-docs.xtdb.com/concepts/bitemporality/) ## OOI OOI objects are instances of relatively simple classes, which inherit from `OOIBase`. -Because all OOIs are stored in Crux and Crux tracks object history by primary key, KAT defines a way to reliably determine the primary key of an object by its attributes. This is called the [natural key](https://en.wikipedia.org/wiki/Natural_key) of an object. +Because all OOIs are stored in XTDB and XTDB tracks object history by primary key, KAT defines a way to reliably determine the primary key of an object by its attributes. This is called the [natural key](https://en.wikipedia.org/wiki/Natural_key) of an object. The main advantage of this method, is that when enough attributes of an OOI are discovered, the primary key of this object is known. This allows reasoning about the exact same objects in several subsystems, without having to query a database. @@ -442,14 +442,14 @@ OctopoesAPIConnector('http://octopoes', '_dev').list({IPAddress}) ``` ## Querying -Octopoes API uses the OOI model to construct Crux queries. For complex graph-querying, Crux's [pull-syntax](https://www.opencrux.com/reference/1.16.0/queries.html#pull) is used to build a query tree. Crux can join objects to properties which hold (lists of) foreign keys. +Octopoes API uses the OOI model to construct XTDB queries. For complex graph-querying, XTDB's [pull-syntax](https://v1-docs.xtdb.com/language-reference/1.24.3/datalog-queries/#pull) is used to build a query tree. XTDB can join objects to properties which hold (lists of) foreign keys. Imagine a query "Give me IpAddressV4 with primary key ***X*** and all related objects **2** levels deep". What happens under the hood: - A relation map is created with all OOI classes and their relations - A query plan is created by traversing the relation map 2 levels deep. The queryplan is a tree of QueryNode objects - - The query plan is transformed into a Crux Datalog query, utilizing its pull syntax to join related objects + - The query plan is transformed into a XTDB Datalog query, utilizing its pull syntax to join related objects **Rules**: diff --git a/docs/source/technical_design/debuggingtroubleshooting.rst b/docs/source/technical_design/debuggingtroubleshooting.rst index 1212bf67d62..3b7d8189b65 100644 --- a/docs/source/technical_design/debuggingtroubleshooting.rst +++ b/docs/source/technical_design/debuggingtroubleshooting.rst @@ -66,9 +66,9 @@ When OpenKAT runs in debug mode, it produces large logfiles. Several hours of de XTDB memory size ================ -In bigger installations, xtdb/crux might need more memory to function properly. This will show up as xtdb repeatedly crashing with: ``Terminating due to java.lang.OutOfMemoryError: Java heap space`` +In bigger installations, XTDB might need more memory to function properly. This will show up as XTDB repeatedly crashing with: ``Terminating due to java.lang.OutOfMemoryError: Java heap space`` -Giving xtdb more memory can help to solve this issue. The xtdb-http-multinode README contains some short instructions for this, namely increasing the ``Xmx (max heap)`` and maybe also ``MaxDirectMemorySize`` in the ``JAVA_TOOL_OPTIONS`` environment variable for the crux Docker container. The default for this variable is ``-Xms128M -Xmx512M -XX:MaxDirectMemorySize=512M -XX:+ExitOnOutOfMemoryError``. +Giving xtdb more memory can help to solve this issue. The xtdb-http-multinode README contains some short instructions for this, namely increasing the ``Xmx (max heap)`` and maybe also ``MaxDirectMemorySize`` in the ``JAVA_TOOL_OPTIONS`` environment variable for the XTDB Docker container. The default for this variable is ``-Xms128M -Xmx512M -XX:MaxDirectMemorySize=512M -XX:+ExitOnOutOfMemoryError``. In the Debian package there are two different variables, namely ``MAX_MEMORY`` and ``MAX_DIRECT_MEMORY`` (see ``xtdb-http-multinode.service``). These can be set using a systemd unit file override (``systemctl edit``). diff --git a/mula/.ci/.env.test b/mula/.ci/.env.test index 296d6268d87..75b28efe711 100644 --- a/mula/.ci/.env.test +++ b/mula/.ci/.env.test @@ -40,4 +40,3 @@ KATALOGUS_DB_URI=postgresql://${KATALOGUS_DB_USER}:${KATALOGUS_DB_PASSWORD}@ci_p OCTOPOES_SCAN_LEVEL_RECALCULATION_INTERVAL=60 QUEUE_NAME_OCTOPOES=octopoes XTDB_URI=http://ci_crux:3000 -XTDB_TYPE=xtdb-multinode diff --git a/octopoes/.ci/ci-crux.env b/octopoes/.ci/ci-crux.env deleted file mode 100644 index dfea361e36d..00000000000 --- a/octopoes/.ci/ci-crux.env +++ /dev/null @@ -1,10 +0,0 @@ -RABBITMQ_DEFAULT_VHOST=kat -RABBITMQ_DEFAULT_USER=ci_user -RABBITMQ_DEFAULT_PASS=ci_pass - -QUEUE_URI=amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq:5672/${RABBITMQ_DEFAULT_VHOST} - -KATALOGUS_API=http://katalogus_mock:8080 - -XTDB_URI=http://crux:3000 -OCTOPOES_XTDB_TYPE=crux diff --git a/octopoes/.ci/ci-multinode.env b/octopoes/.ci/ci-multinode.env deleted file mode 100644 index 3d70048c316..00000000000 --- a/octopoes/.ci/ci-multinode.env +++ /dev/null @@ -1,11 +0,0 @@ -RABBITMQ_DEFAULT_VHOST=kat -RABBITMQ_DEFAULT_USER=ci_user -RABBITMQ_DEFAULT_PASS=ci_pass - -QUEUE_URI=amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq:5672/${RABBITMQ_DEFAULT_VHOST} - -KATALOGUS_API=http://katalogus_mock:8080 - -XTDB_URI=http://xtdb_multinode:3000 -OCTOPOES_XTDB_TYPE=xtdb-multinode -CI=1 diff --git a/octopoes/.ci/ci.env b/octopoes/.ci/ci.env index e99b03e9830..23f8819e586 100644 --- a/octopoes/.ci/ci.env +++ b/octopoes/.ci/ci.env @@ -6,5 +6,5 @@ QUEUE_URI=amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq:5672 KATALOGUS_API=http://katalogus_mock:8080 -XTDB_URI=http://crux:3000 -OCTOPOES_XTDB_TYPE=xtdb +XTDB_URI=http://xtdb:3000 +CI=1 diff --git a/octopoes/.ci/docker-compose-crux.yml b/octopoes/.ci/docker-compose-crux.yml deleted file mode 100644 index ed98a47e883..00000000000 --- a/octopoes/.ci/docker-compose-crux.yml +++ /dev/null @@ -1,69 +0,0 @@ -version: "3.9" - -services: - - rabbitmq: - restart: on-failure - image: "rabbitmq:3.11-management" - ports: - - "127.0.0.1:28003:15672" - - "127.0.0.1:28004:5672" - healthcheck: - test: [ "CMD", "rabbitmqctl", "status" ] - interval: 5s - retries: 10 - env_file: - - ".ci/ci-crux.env" - - crux: - env_file: - - ".ci/ci-crux.env" - healthcheck: - test: [ "CMD", "python3", "/home/health_check.py", "http://localhost:3000/_crux/status"] - interval: 5s - retries: 10 - image: "juxt/crux-in-memory:21.05-1.17.0" - ports: - - "127.0.0.1:28002:3000" - restart: on-failure - volumes: - - ./.ci/health_check.py:/home/health_check.py - - octopoes_api: - build: - context: . - command: uvicorn octopoes.api.api:app --host 0.0.0.0 --port 80 - depends_on: - rabbitmq: - condition: service_healthy - crux: - condition: service_healthy - ports: - - "127.0.0.1:28000:80" - env_file: - - ".ci/ci-crux.env" - - octopoes_api_worker: - build: - context: . - command: celery -A octopoes.tasks.tasks worker -E -B -s /tmp/celerybeat-schedule --loglevel=INFO - depends_on: - rabbitmq: - condition: service_healthy - crux: - condition: service_healthy - env_file: - - ".ci/ci-crux.env" - ulimits: - nofile: - soft: 262144 - hard: 262144 - - katalogus_mock: - image: "wiremock/wiremock:2.34.0" - volumes: - - ./.ci/wiremock:/home/wiremock - ports: - - "127.0.0.1:28001:8080" - env_file: - - ".ci/ci-crux.env" diff --git a/octopoes/.ci/docker-compose.yml b/octopoes/.ci/docker-compose.yml index e5a4e16211e..8818557e11a 100644 --- a/octopoes/.ci/docker-compose.yml +++ b/octopoes/.ci/docker-compose.yml @@ -15,21 +15,6 @@ services: env_file: - ".ci/ci.env" - crux: - env_file: - - ".ci/ci.env" - entrypoint: ["clojure", "-J-Dlogback.configurationFile=resources/logback.xml", "-M", "-m", "xtdb.main"] - healthcheck: - test: [ "CMD", "python3", "/home/health_check.py", "http://localhost:3000/_xtdb/status"] - interval: 5s - retries: 10 - image: "juxt/xtdb-standalone-rocksdb:1.21.0" - ports: - - "127.0.0.1:29002:3000" - restart: on-failure - volumes: - - ./.ci/health_check.py:/home/health_check.py - octopoes_integration: build: args: @@ -37,13 +22,15 @@ services: context: . command: pytest -x tests/integration --timeout=300 depends_on: - - xtdb_multinode + - xtdb - ci_octopoes env_file: - - ".ci/ci-multinode.env" + - ".ci/ci.env" - xtdb_multinode: + xtdb: image: "ghcr.io/dekkers/xtdb-http-multinode:v1.0.8" + ports: + - "127.0.0.1:29002:3000" ci_octopoes: build: @@ -52,56 +39,26 @@ services: depends_on: rabbitmq: condition: service_healthy - xtdb_multinode: + xtdb: condition: service_started katalogus_mock: condition: service_started ci_octopoes_api_worker: condition: service_started env_file: - - ".ci/ci-multinode.env" - - ci_octopoes_api_worker: - build: - context: . - command: celery -A octopoes.tasks.tasks worker -E -B -s /tmp/celerybeat-schedule --loglevel=INFO - depends_on: - rabbitmq: - condition: service_healthy - xtdb_multinode: - condition: service_started - env_file: - - ".ci/ci-multinode.env" - ulimits: - nofile: - soft: 262144 - hard: 262144 - - octopoes_api: - build: - context: . - command: uvicorn octopoes.api.api:app --host 0.0.0.0 --port 80 - depends_on: - rabbitmq: - condition: service_healthy - crux: - condition: service_healthy - katalogus_mock: - condition: service_started + - ".ci/ci.env" ports: - "127.0.0.1:29000:80" - env_file: - - ".ci/ci.env" - octopoes_api_worker: + ci_octopoes_api_worker: build: context: . - command: celery -A octopoes.tasks.tasks worker -E -B -s /tmp/celerybeat-schedule --loglevel=INFO + command: celery -A octopoes.tasks.tasks worker -E --loglevel=INFO depends_on: rabbitmq: condition: service_healthy - crux: - condition: service_healthy + xtdb: + condition: service_started env_file: - ".ci/ci.env" ulimits: diff --git a/octopoes/Makefile b/octopoes/Makefile index 596931e3855..b40df3d33e5 100644 --- a/octopoes/Makefile +++ b/octopoes/Makefile @@ -48,19 +48,12 @@ test: rtest: docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml kill docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml down --remove-orphans - docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml up -d --build octopoes_api octopoes_api_worker + docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml up -d --build ci_octopoes ci_octopoes_api_worker sleep 2 - robot -d reports --variablefile tests/robot/variables.py:xtdb tests/robot + robot -d reports tests/robot itest: docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml kill docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml build $(build_args) docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml down docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml run --rm octopoes_integration - -rtest-crux: - docker compose -f docker-compose-base.yml -f .ci/docker-compose.yml kill - docker compose -f docker-compose-base.yml -f .ci/docker-compose-crux.yml down --remove-orphans - docker compose -f docker-compose-base.yml -f .ci/docker-compose-crux.yml up -d --build octopoes_api octopoes_api_worker - sleep 2 - robot -d reports --variablefile tests/robot/variables.py:crux tests/robot || : diff --git a/octopoes/docs/source/conf.py b/octopoes/docs/source/conf.py deleted file mode 100644 index 0688b53e2e9..00000000000 --- a/octopoes/docs/source/conf.py +++ /dev/null @@ -1,51 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# -# For the full list of built-in configuration values, see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Project information ----------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information - -# Needed for automatic apidoc -import os -import sys - -sys.path.insert(0, os.path.abspath("../..")) - -project = "Octopoes" -copyright = "Ministerie van Volksgezondheid, Welzijn en Sport (European Union Public License 1.2)" -author = "The OpenKAT team" -version = "develop" -release = "develop" - -# -- General configuration --------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "sphinx.ext.napoleon", - "sphinx.ext.viewcode", - "sphinx.ext.githubpages", - "sphinx_rtd_theme", - "myst_parser", - "sphinxcontrib.mermaid", -] - -autosummary_generate = True -autodoc_default_options = { - "members": True, - "show-inheritance": True, - "inherited-members": True, - "no-special-members": True, -} - -templates_path = ["_templates"] -exclude_patterns = [] - - -# -- Options for HTML output ------------------------------------------------- -# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output - -html_theme = "sphinx_rtd_theme" -html_static_path = ["_static"] diff --git a/octopoes/docs/source/img/kat_data_example.png b/octopoes/docs/source/img/kat_data_example.png deleted file mode 100644 index 3b31558899ddc06f8d1f8aa2d703e25cfafcc01d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110881 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

N=7&m?cCmY2x~M6f}>}{UOlj# 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 DTc8pJ diff --git a/octopoes/docs/source/img/kat_data_structure.png b/octopoes/docs/source/img/kat_data_structure.png deleted file mode 100644 index 83b47ca0b9601710310fac1ac79ac68314555f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94630 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 diff --git a/octopoes/docs/source/img/kat_query_plan.png b/octopoes/docs/source/img/kat_query_plan.png deleted file mode 100644 index 41a90f2d498e9dac3b2c5806e87a66dfe8fe191c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113044 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�oubtuD8R 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

    {% translate "IP address lookup" %}

    -
    - {% if data.ipv4 %} +{% if data.records %} +

    {% translate "Records found" %}

    +

    + {% blocktranslate trimmed %} + The table below gives an overview of the DNS records that were found for the abovementioned DNSZone. + {% endblocktranslate %} +

    +
    - - - - - - - - - {% for ip in data.ipv4 %}{% endfor %} - - -
    IPv4:
    IPv4
    {{ ip }}
    - {% endif %} - {% if not data.enough_ipv6_webservers %} -

    IPv6

    -
    - {% translate "Warning" %}: + {% translate "Records found" %}

    - {% blocktranslate trimmed %} - You have less than one webserver that is reachable over IPv6, - which is not in compliance to internet.nl standards. + {% blocktranslate %} + Disclaimer: + Not all DNSRecords are parsed in OpenKAT. + DNS record types that are parsed and could be displayed in the table are: {% endblocktranslate %} + A, AAAA, CAA, CNAME, NS, MX, PTR, SOA, SRV, TXT.

    -
    - {% else %} - - - - - - - - - - {% for ip in data.ipv6 %}{% endfor %} - - -
    IPv6:
    IPv6
    {{ ip }}
    - {% endif %} -
    -{% if data.other_records %} -

    {% translate "Other records found" %}

    -
    - - +
    + {% translate "All existing DNS record types can be found here" %}: + https://en.wikipedia.org/wiki/List_of_DNS_record_types + +
    - - + + + - {% for ooi in data.other_records %} + {% for ooi in data.records %} - + + + - {% endfor %} diff --git a/rocky/reports/report_types/dns_report/report.py b/rocky/reports/report_types/dns_report/report.py index 356a7cb0aef..e10c25459a3 100644 --- a/rocky/reports/report_types/dns_report/report.py +++ b/rocky/reports/report_types/dns_report/report.py @@ -5,7 +5,7 @@ from django.utils.translation import gettext_lazy as _ from octopoes.models import Reference -from octopoes.models.ooi.dns.records import DNSAAAARecord, DNSARecord, DNSRecord +from octopoes.models.ooi.dns.records import DNSRecord from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.findings import Finding from reports.report_types.definitions import Report @@ -27,7 +27,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: ref, depth=3, types={DNSRecord, Finding}, valid_time=valid_time ).store - other_records = [] + records = [] security = { "spf": True, "dkim": True, @@ -35,45 +35,24 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: "dnssec": True, "caa": True, } - ipv4 = [] - ipv6 = [] for ooi_type, ooi in tree.items(): - reference = Reference.from_str(ooi) - if isinstance(ooi, DNSARecord): - if ref.tokenized.name == ooi.hostname.tokenized.name: - ipv4.append(ooi.value) - elif isinstance(ooi, DNSAAAARecord): - if ref.tokenized.name == ooi.hostname.tokenized.name: - ipv6.append(ooi.value) + if isinstance(ooi, Finding): + for check in ["caa", "dkim", "dmarc", "dnssec", "spf"]: + if "NO-%s" % check.upper() in ooi.finding_type.tokenized.id: + security[check] = False elif isinstance(ooi, DNSRecord): - origin = self.octopoes_api_connector.list_origins(source=ref, result=reference, valid_time=valid_time) - if origin: - other_records.append( - { - "human_readable": reference.human_readable, - "content": ooi.value, - "origin": origin[0].method, - } - ) - elif isinstance(ooi, Finding): - if "NO-SPF" in ooi.finding_type.tokenized.id: - security["spf"] = False - if "NO-DKIM" in ooi.finding_type.tokenized.id: - security["dkim"] = False - if "NO-DMARC" in ooi.finding_type.tokenized.id: - security["dmarc"] = False - if "NO-DNSSEC" in ooi.finding_type.tokenized.id: - security["dnssec"] = False - if "NO-CAA" in ooi.finding_type.tokenized.id: - security["caa"] = False - - enough_ipv6_webservers = len(ipv6) >= 2 + records.append( + { + "type": ooi.dns_record_type, + "ttl": round(ooi.ttl / 60), + "name": ooi.hostname.tokenized.name, + "content": ooi.value, + } + ) + records = sorted(records, key=lambda x: x["type"]) return { "input_ooi": input_ooi, - "other_records": other_records, + "records": records, "security": security, - "ipv4": ipv4, - "ipv6": ipv6, - "enough_ipv6_webservers": enough_ipv6_webservers, } diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index ca58c29e486..9ed40fc961a 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-01-26 20:33+0000\n" +"POT-Creation-Date: 2024-02-06 07:57+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -28,6 +28,7 @@ msgstr "" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html #: rocky/templates/organizations/organization_settings.html @@ -1432,7 +1433,6 @@ msgstr "" #: katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html -#: reports/report_types/dns_report/report.html #: rocky/templates/oois/ooi_delete.html msgid "Value" msgstr "" @@ -2171,6 +2171,7 @@ msgid "" msgstr "" #: onboarding/templates/step_2a_choose_report_info.html +#: reports/report_types/dns_report/report.html msgid "Data" msgstr "" @@ -3147,39 +3148,39 @@ msgid "" msgstr "" #: reports/report_types/dns_report/report.html -msgid "IP address lookup" +msgid "Records found" msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "warning" +msgid "" +"The table below gives an overview of the DNS records that were found for the " +"abovementioned DNSZone." msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "Warning" +msgid "" +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Record" +msgid "TTL" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -4631,6 +4632,18 @@ msgstr "" msgid "User overview:" msgstr "" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "" From ff1874a51ca35ec1822f52e2ef2ca9a3be5aa19b Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Wed, 7 Feb 2024 11:57:10 +0100 Subject: [PATCH 17/85] upgrade forcediphttpsadapter (#2453) --- boefjes/poetry.lock | 10 ++++++---- boefjes/pyproject.toml | 2 +- boefjes/requirements-dev.txt | 5 +++-- boefjes/requirements.txt | 5 +++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index a30deeb6ca4..c95bfd8e4ec 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "aiohttp" @@ -687,15 +687,17 @@ typing = ["typing-extensions (>=4.8)"] [[package]] name = "forcediphttpsadapter" -version = "1.0.2" +version = "1.1.0" description = "This module implements a set of requests TransportAdapter, PoolManager, ConnectionPool and HTTPSConnection allowing use of a specific IP address when connecting via SSL to a web service without running into SNI trouble." optional = false python-versions = "*" files = [ - {file = "forcediphttpsadapter-1.0.2.tar.gz", hash = "sha256:f7582b34aaa6ab6b17f69ab1abbfe67097b952ed0682b758b5e01e18fe24433e"}, + {file = "forcediphttpsadapter-1.1.0-py3-none-any.whl", hash = "sha256:5e7662ece61735585332d09b87d94fffe4752469d5c0d3feff48746e5d70744b"}, + {file = "forcediphttpsadapter-1.1.0.tar.gz", hash = "sha256:0d224cf6e8e50eb788c9f5994a7afa6d389bac6dbe540b7dfd77a32590ad0153"}, ] [package.dependencies] +packaging = "*" requests = "*" [[package]] @@ -2876,4 +2878,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "3b34340e4f02541aa473bd7525bbeba62d543494ba947a075f750624235f3f07" +content-hash = "e4214a32dc05b6e34cb942465d756e669f894f2f00ccb4309542ae4313f36f29" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index 200e47053f0..6bb76551715 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -48,7 +48,7 @@ cryptography = "^42.0.1" # required by kat_webpage_analysis/check_images normalizer Pillow = "^10.0.1" # required by kat_webpage_analysis -forcediphttpsadapter = "1.0.2" +forcediphttpsadapter = "1.1.0" # required by kat_webpage_analysis (forcediphttpsadapter) urllib3 = "^2.1.0" # required by kat_website_software diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 15c652d870d..0e40e2d5f84 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -324,8 +324,9 @@ fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -forcediphttpsadapter==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:f7582b34aaa6ab6b17f69ab1abbfe67097b952ed0682b758b5e01e18fe24433e +forcediphttpsadapter==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0d224cf6e8e50eb788c9f5994a7afa6d389bac6dbe540b7dfd77a32590ad0153 \ + --hash=sha256:5e7662ece61735585332d09b87d94fffe4752469d5c0d3feff48746e5d70744b frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7 \ --hash=sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98 \ diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index 61f0d13fde3..a936b7d5938 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -324,8 +324,9 @@ fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -forcediphttpsadapter==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:f7582b34aaa6ab6b17f69ab1abbfe67097b952ed0682b758b5e01e18fe24433e +forcediphttpsadapter==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0d224cf6e8e50eb788c9f5994a7afa6d389bac6dbe540b7dfd77a32590ad0153 \ + --hash=sha256:5e7662ece61735585332d09b87d94fffe4752469d5c0d3feff48746e5d70744b frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7 \ --hash=sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98 \ From 785ecf28fc5bb7fe189821cab0ea316ce2393b65 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Wed, 7 Feb 2024 12:06:54 +0100 Subject: [PATCH 18/85] Fix argument order and hence avoid the octopoes factory (#2454) Signed-off-by: Donny Peeters Co-authored-by: Jan Klopper --- boefjes/boefjes/app.py | 4 +++- boefjes/boefjes/job_handler.py | 8 ++++---- boefjes/tests/test_scan_profiles.py | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/boefjes/boefjes/app.py b/boefjes/boefjes/app.py index bc5e8e2abb3..662b1a1ffd9 100644 --- a/boefjes/boefjes/app.py +++ b/boefjes/boefjes/app.py @@ -257,7 +257,9 @@ def get_runtime_manager(settings: Settings, queue: WorkerManager.Queue, log_leve item_handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository, bytes_api_client) else: item_handler = NormalizerHandler( - LocalNormalizerJobRunner(local_repository), bytes_api_client, settings.scan_profile_whitelist + LocalNormalizerJobRunner(local_repository), + bytes_api_client, + settings.scan_profile_whitelist, ) return SchedulerWorkerManager( diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 9ca71016150..2d4ae4e5020 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -3,7 +3,7 @@ import traceback from datetime import datetime, timedelta, timezone from enum import Enum -from typing import Any, Dict, List, Optional +from typing import Any, Callable, Dict, List, Optional import requests from pydantic.tools import parse_obj_as @@ -82,7 +82,7 @@ def serialize_ooi(ooi: OOI): return serialized_oois -def get_octopoes_api_connector(org_code: str): +def get_octopoes_api_connector(org_code: str) -> OctopoesAPIConnector: return OctopoesAPIConnector(str(settings.octopoes_api), org_code) @@ -189,13 +189,13 @@ def __init__( self, job_runner: NormalizerJobRunner, bytes_client: BytesAPIClient, - octopoes_factory=get_octopoes_api_connector, whitelist: Optional[Dict[str, int]] = None, + octopoes_factory: Callable[[str], OctopoesAPIConnector] = 3, ): self.job_runner = job_runner self.bytes_client: BytesAPIClient = bytes_client - self.octopoes_factory = octopoes_factory self.whitelist = whitelist + self.octopoes_factory = octopoes_factory def handle(self, normalizer_meta: NormalizerMeta) -> None: logger.info("Handling normalizer %s[%s]", normalizer_meta.normalizer.id, normalizer_meta.id) diff --git a/boefjes/tests/test_scan_profiles.py b/boefjes/tests/test_scan_profiles.py index 366c5296ce3..40cfcd1c1f7 100644 --- a/boefjes/tests/test_scan_profiles.py +++ b/boefjes/tests/test_scan_profiles.py @@ -69,19 +69,19 @@ def test_job_handler_respects_whitelist(self): Settings() os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"x": 3}' - NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + NormalizerHandler(runner, bytes_mock, Settings().scan_profile_whitelist, lambda x: octopoes).handle(meta) assert octopoes.save_many_scan_profiles.call_count == 0 os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 2}' - NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + NormalizerHandler(runner, bytes_mock, Settings().scan_profile_whitelist, lambda x: octopoes).handle(meta) assert octopoes.save_many_scan_profiles.call_count == 1 assert octopoes.save_many_scan_profiles.call_args[0][0][0].level == 2 os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 3}' - NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + NormalizerHandler(runner, bytes_mock, Settings().scan_profile_whitelist, lambda x: octopoes).handle(meta) assert octopoes.save_many_scan_profiles.call_count == 2 assert octopoes.save_many_scan_profiles.call_args[0][0][0].level == 3 os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 4, "abc": 0}' - NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + NormalizerHandler(runner, bytes_mock, Settings().scan_profile_whitelist, lambda x: octopoes).handle(meta) assert octopoes.save_many_scan_profiles.call_count == 3 From 156447bac78a789b6b7970a9583457c30516b8ec Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Wed, 7 Feb 2024 14:23:15 +0100 Subject: [PATCH 19/85] Hotfix for default arg (#2458) Signed-off-by: Donny Peeters --- boefjes/boefjes/job_handler.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 2d4ae4e5020..e9277598c09 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -190,7 +190,7 @@ def __init__( job_runner: NormalizerJobRunner, bytes_client: BytesAPIClient, whitelist: Optional[Dict[str, int]] = None, - octopoes_factory: Callable[[str], OctopoesAPIConnector] = 3, + octopoes_factory: Callable[[str], OctopoesAPIConnector] = get_octopoes_api_connector, ): self.job_runner = job_runner self.bytes_client: BytesAPIClient = bytes_client From a3386ecea8612ba55f68b7483a2e7085c2761889 Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Wed, 7 Feb 2024 18:24:40 +0100 Subject: [PATCH 20/85] Feature/report benchmarks (#2447) Co-authored-by: Jan Klopper --- .github/workflows/rocky_tests.yml | 6 ++--- .gitignore | 2 ++ rocky/.ci/docker-compose.yml | 32 +++++++++++++-------------- rocky/Makefile | 25 ++++++++++++--------- rocky/base.yml | 1 - rocky/pyproject.toml | 3 ++- rocky/tests/integration/conftest.py | 25 ++++++++++++--------- rocky/tests/integration/test_bench.py | 18 +++++++++++++++ 8 files changed, 70 insertions(+), 42 deletions(-) delete mode 100644 rocky/base.yml create mode 100644 rocky/tests/integration/test_bench.py diff --git a/.github/workflows/rocky_tests.yml b/.github/workflows/rocky_tests.yml index 9e56e3ada91..0c7bc9969cf 100644 --- a/.github/workflows/rocky_tests.yml +++ b/.github/workflows/rocky_tests.yml @@ -29,10 +29,10 @@ jobs: uses: actions/checkout@v4 - name: Build image - run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/base.yml -f rocky/.ci/docker-compose.yml build --build-arg USER_UID="$(id -u)" --build-arg USER_GID="$(id -g)" --build-arg PYTHON_VERSION=${{ matrix.version }} rocky_tests rocky_integration_tests + run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/.ci/docker-compose.yml build --build-arg USER_UID="$(id -u)" --build-arg USER_GID="$(id -g)" --build-arg PYTHON_VERSION=${{ matrix.version }} rocky_tests rocky_integration - name: Run tests - run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/base.yml -f rocky/.ci/docker-compose.yml run --rm rocky_tests + run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/.ci/docker-compose.yml run --rm rocky_tests - name: Run integration tests - run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/base.yml -f rocky/.ci/docker-compose.yml run --rm rocky_integration_tests + run: DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose -f rocky/.ci/docker-compose.yml run --rm rocky_integration diff --git a/.gitignore b/.gitignore index 4ba7555a994..cbf5265286c 100644 --- a/.gitignore +++ b/.gitignore @@ -442,3 +442,5 @@ nl-kat-* # rpki cache /boefjes/boefjes/plugins/kat_rpki/rpki.json /boefjes/boefjes/plugins/kat_rpki/rpki-meta.json + +*.pstat diff --git a/rocky/.ci/docker-compose.yml b/rocky/.ci/docker-compose.yml index 12454eb6eaf..132364cc438 100644 --- a/rocky/.ci/docker-compose.yml +++ b/rocky/.ci/docker-compose.yml @@ -3,7 +3,7 @@ version: "3.9" services: rocky_tests: build: - context: .. + context: ../.. dockerfile: rocky/Dockerfile args: ENVIRONMENT: dev @@ -12,38 +12,38 @@ services: depends_on: - ci_rocky-db volumes: - - .:/app/rocky - - ./.ci/run_rocky.sh:/app/run_rocky.sh - - ../octopoes/octopoes:/app/rocky/octopoes + - ..:/app/rocky + - ./run_rocky.sh:/app/run_rocky.sh + - ../../octopoes/octopoes:/app/rocky/octopoes env_file: - - .ci/.env.test + - .env.test - rocky_integration_tests: + rocky_integration: build: - context: .. + context: ../.. dockerfile: rocky/Dockerfile args: ENVIRONMENT: dev target: dev - command: python -m pytest tests/integration + command: pytest tests/integration depends_on: - ci_rocky-db - ci_octopoes volumes: - - .:/app/rocky - - ./.ci/run_rocky.sh:/app/run_rocky.sh - - ../octopoes/octopoes:/app/rocky/octopoes + - ..:/app/rocky + - ./run_rocky.sh:/app/run_rocky.sh + - ../../octopoes/octopoes:/app/rocky/octopoes env_file: - - .ci/.env.test + - .env.test ci_rocky-db: image: postgres:15 env_file: - - .ci/.env.test + - .env.test ci_octopoes: build: - context: ../octopoes + context: ../../octopoes command: uvicorn octopoes.api.api:app --host 0.0.0.0 --port 80 depends_on: rabbitmq: @@ -51,7 +51,7 @@ services: xtdb: condition: service_started env_file: - - .ci/.env.test + - .env.test xtdb: image: "ghcr.io/dekkers/xtdb-http-multinode:v1.0.8" @@ -64,4 +64,4 @@ services: interval: 5s retries: 4 env_file: - - .ci/.env.test + - .env.test diff --git a/rocky/Makefile b/rocky/Makefile index d3a9aab2746..6f69fb3d60d 100644 --- a/rocky/Makefile +++ b/rocky/Makefile @@ -34,17 +34,20 @@ run: test: python3 manage.py test -utest: ## Run the integration tests. - docker compose -f base.yml -f .ci/docker-compose.yml kill - docker compose -f base.yml -f .ci/docker-compose.yml down --remove-orphans - docker compose -f base.yml -f .ci/docker-compose.yml build - docker compose -f base.yml -f .ci/docker-compose.yml run --rm rocky_tests - -itest: ## Run the integration tests. - docker compose -f base.yml -f .ci/docker-compose.yml kill - docker compose -f base.yml -f .ci/docker-compose.yml down --remove-orphans - docker compose -f base.yml -f .ci/docker-compose.yml build - docker compose -f base.yml -f .ci/docker-compose.yml run --rm rocky_integration_tests +testclean: + docker compose -f .ci/docker-compose.yml kill + docker compose -f .ci/docker-compose.yml down --remove-orphans + docker compose -f .ci/docker-compose.yml build + +utest: testclean ## Run the unit tests. + docker compose -f .ci/docker-compose.yml run --rm rocky_tests + +itest: testclean ## Run the integration tests. + docker compose -f .ci/docker-compose.yml run --rm rocky_integration + +bench: testclean ## Run the report benchmark. + docker compose -f .ci/docker-compose.yml run --rm rocky_integration \ + python -m cProfile -o .ci/bench_$$(date +%Y_%m_%d-%H:%M:%S).pstat -m pytest -m slow --no-cov tests/integration export_migrations: python manage.py export_migrations contenttypes 0001 diff --git a/rocky/base.yml b/rocky/base.yml deleted file mode 100644 index 2fe3bedc421..00000000000 --- a/rocky/base.yml +++ /dev/null @@ -1 +0,0 @@ -version: "3.9" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index bea6d7afb50..dd9028c06aa 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -96,8 +96,9 @@ requires = ["setuptools>=62.2", "wheel"] build-backend = "setuptools.build_meta:__legacy__" [tool.pytest.ini_options] -addopts = "--cov --cov-branch --cov-report=term-missing:skip-covered --ignore=tests/integration" +addopts = "--cov --cov-branch --cov-report=term-missing:skip-covered -m 'not slow' --ignore=tests/integration" DJANGO_SETTINGS_MODULE = "rocky.settings_test" +markers = ["slow: marks tests as slow"] [tool.coverage.run] omit = ["fmea/*"] diff --git a/rocky/tests/integration/conftest.py b/rocky/tests/integration/conftest.py index c2e8d6395e9..bcac0ba8308 100644 --- a/rocky/tests/integration/conftest.py +++ b/rocky/tests/integration/conftest.py @@ -47,22 +47,27 @@ def octopoes_api_connector_2(request) -> OctopoesAPIConnector: connector.delete_node() -def seed_system(octopoes_api_connector: OctopoesAPIConnector, valid_time): +def seed_system( + octopoes_api_connector: OctopoesAPIConnector, + valid_time: datetime, + test_hostname: str = "example.com", + test_ip: str = "192.0.2.3", +): network = Network(name="test") octopoes_api_connector.save_declaration(Declaration(ooi=network, valid_time=valid_time)) hostnames = [ - Hostname(network=network.reference, name="example.com"), - Hostname(network=network.reference, name="a.example.com"), - Hostname(network=network.reference, name="b.example.com"), - Hostname(network=network.reference, name="c.example.com"), - Hostname(network=network.reference, name="d.example.com"), - Hostname(network=network.reference, name="e.example.com"), - Hostname(network=network.reference, name="f.example.com"), + Hostname(network=network.reference, name=test_hostname), + Hostname(network=network.reference, name=f"a.{test_hostname}"), + Hostname(network=network.reference, name=f"b.{test_hostname}"), + Hostname(network=network.reference, name=f"c.{test_hostname}"), + Hostname(network=network.reference, name=f"d.{test_hostname}"), + Hostname(network=network.reference, name=f"e.{test_hostname}"), + Hostname(network=network.reference, name=f"f.{test_hostname}"), ] addresses = [ - IPAddressV4(network=network.reference, address=ip_address("192.0.2.3")), + IPAddressV4(network=network.reference, address=ip_address(test_ip)), IPAddressV6(network=network.reference, address=ip_address("3e4d:64a2:cb49:bd48:a1ba:def3:d15d:9230")), ] ports = [ @@ -93,7 +98,7 @@ def seed_system(octopoes_api_connector: OctopoesAPIConnector, valid_time): ] certificates = [ X509Certificate( - subject="example.com", + subject=test_hostname, valid_from="2022-11-15T08:52:57", valid_until="2030-11-15T08:52:57", serial_number="abc123", diff --git a/rocky/tests/integration/test_bench.py b/rocky/tests/integration/test_bench.py new file mode 100644 index 00000000000..ffdc879e6dc --- /dev/null +++ b/rocky/tests/integration/test_bench.py @@ -0,0 +1,18 @@ +import pytest +from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport, aggregate_reports + +from tests.integration.conftest import seed_system + + +@pytest.mark.slow +def test_aggregate_report_benchmark(octopoes_api_connector, valid_time): + hostname_range = range(0, 20) + for x in hostname_range: + seed_system(octopoes_api_connector, valid_time, test_hostname=f"{x}.com", test_ip=f"192.0.{x % 7}.{x % 256}") + + reports = AggregateOrganisationReport.reports["required"] + AggregateOrganisationReport.reports["optional"] + _, data, _, _ = aggregate_reports( + octopoes_api_connector, [f"Hostname|test|{x}.com" for x in hostname_range], reports, valid_time + ) + + assert data From 0a9fe1a703a7e49e811e849202e101d1d91e79c9 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Thu, 8 Feb 2024 11:26:25 +0100 Subject: [PATCH 21/85] Add traces for pop and push to queue in scheduler (#2467) Co-authored-by: Jeroen Dekkers --- mula/scheduler/schedulers/scheduler.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mula/scheduler/schedulers/scheduler.py b/mula/scheduler/schedulers/scheduler.py index 42c311e8c49..71ef95b74d5 100644 --- a/mula/scheduler/schedulers/scheduler.py +++ b/mula/scheduler/schedulers/scheduler.py @@ -5,10 +5,13 @@ from typing import Any, Callable, Dict, List, Optional import structlog +from opentelemetry import trace from scheduler import connectors, context, models, queues, storage, utils from scheduler.utils import thread +tracer = trace.get_tracer(__name__) + class Scheduler(abc.ABC): """The Scheduler class combines the priority queue. @@ -138,6 +141,7 @@ def post_pop(self, p_item: models.PrioritizedItem) -> None: self.last_activity = datetime.now(timezone.utc) + @tracer.start_as_current_span("scheduler_pop_item_from_queue") def pop_item_from_queue( self, filters: Optional[storage.filters.FilterRequest] = None ) -> Optional[models.PrioritizedItem]: @@ -179,6 +183,7 @@ def pop_item_from_queue( return p_item + @tracer.start_as_current_span("scheduler_push_item_to_queue") def push_item_to_queue(self, p_item: models.PrioritizedItem) -> None: """Push a PrioritizedItem to the queue. From cbd5f1ce4574237d53c9b2695a9083ffee91afda Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Thu, 8 Feb 2024 11:39:00 +0100 Subject: [PATCH 22/85] Add mypy and application bootstrap test to boefjes (#2460) Signed-off-by: Donny Peeters Co-authored-by: Jeroen Dekkers --- .pre-commit-config.yaml | 2 +- boefjes/boefjes/api.py | 7 ++-- boefjes/boefjes/app.py | 37 +++++++++++-------- boefjes/boefjes/clients/bytes_client.py | 4 +- boefjes/boefjes/clients/scheduler_client.py | 4 +- boefjes/boefjes/config.py | 2 +- boefjes/boefjes/docker_boefjes_runner.py | 4 +- boefjes/boefjes/job_handler.py | 2 +- boefjes/boefjes/katalogus/clients.py | 2 +- .../boefjes/katalogus/dependencies/plugins.py | 4 +- boefjes/boefjes/katalogus/local_repository.py | 6 +-- boefjes/boefjes/katalogus/storage/memory.py | 8 ++-- boefjes/boefjes/katalogus/types.py | 2 +- boefjes/boefjes/runtime_interfaces.py | 4 +- boefjes/boefjes/sql/plugin_enabled_storage.py | 2 +- boefjes/tests/conftest.py | 4 +- boefjes/tests/test_app.py | 8 +++- 17 files changed, 58 insertions(+), 44 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 5e4782ce8d1..649b7bab088 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,7 +67,7 @@ repos: additional_dependencies: ['types-PyYAML', 'types-requests', 'types-cachetools', 'types-retry', 'pydantic', 'pynacl'] exclude: | (?x)( - ^boefjes/ | + ^boefjes/boefjes/plugins | ^keiko/templates | ^mula/whitelist\.py$ | ^octopoes/ | diff --git a/boefjes/boefjes/api.py b/boefjes/boefjes/api.py index ac7d35e3461..c231fd7bd95 100644 --- a/boefjes/boefjes/api.py +++ b/boefjes/boefjes/api.py @@ -4,6 +4,7 @@ from datetime import datetime, timezone from enum import Enum from typing import List, Optional +from uuid import UUID from fastapi import Depends, FastAPI, HTTPException, Response from pydantic import BaseModel, ConfigDict, Field @@ -49,7 +50,7 @@ def run(): class BoefjeInput(BaseModel): - task_id: str + task_id: UUID output_url: str boefje_meta: BoefjeMeta model_config = ConfigDict(extra="forbid") @@ -90,7 +91,7 @@ async def root(): @app.get("/api/v0/tasks/{task_id}", response_model=BoefjeInput) async def boefje_input( - task_id: str, + task_id: UUID, scheduler_client: SchedulerAPIClient = Depends(get_scheduler_client), local_repository: LocalPluginRepository = Depends(get_local_repository), ): @@ -107,7 +108,7 @@ async def boefje_input( @app.post("/api/v0/tasks/{task_id}") async def boefje_output( - task_id: str, + task_id: UUID, boefje_output: BoefjeOutput, scheduler_client: SchedulerAPIClient = Depends(get_scheduler_client), bytes_client: BytesAPIClient = Depends(get_bytes_client), diff --git a/boefjes/boefjes/app.py b/boefjes/boefjes/app.py index 662b1a1ffd9..b7e1274264b 100644 --- a/boefjes/boefjes/app.py +++ b/boefjes/boefjes/app.py @@ -4,6 +4,7 @@ import signal import sys import time +from queue import Queue from typing import Dict, List, Optional, Tuple from pydantic import ValidationError @@ -40,7 +41,7 @@ def __init__( self.task_queue = manager.Queue() # multiprocessing.Queue() will not work on macOS, see mp.Queue.qsize() self.handling_tasks = manager.dict() - self.workers = [] + self.workers: List[mp.Process] = [] logger.setLevel(log_level) @@ -77,7 +78,7 @@ def run(self, queue_type: WorkerManager.Queue) -> None: raise - def _fill_queue(self, task_queue: mp.Queue, queue_type: WorkerManager.Queue): + def _fill_queue(self, task_queue: Queue, queue_type: WorkerManager.Queue): if task_queue.qsize() > self.settings.pool_size: time.sleep(self.settings.worker_heartbeat) return @@ -141,15 +142,20 @@ def _check_workers(self) -> None: new_workers = [] for worker in self.workers: - if not worker._closed and worker.is_alive(): - new_workers.append(worker) - continue + closed = False + + try: + if worker.is_alive(): + new_workers.append(worker) + continue + except ValueError: + closed = True # worker is closed, so we create a new one logger.warning( "Worker[pid=%s, %s] not alive, creating new worker...", worker.pid, _format_exit_code(worker.exitcode) ) - if not worker._closed: # Closed workers do not have a pid, so cleaning up would fail + if not closed: # Closed workers do not have a pid, so cleaning up would fail self._cleanup_pending_worker_task(worker) worker.close() @@ -198,9 +204,12 @@ def exit(self, queue_type: WorkerManager.Queue, signum: Optional[int] = None): killed_workers = [] for worker in self.workers: # Send all signals before joining, speeding up shutdowns - if not worker._closed and worker.is_alive(): - worker.kill() - killed_workers.append(worker) + try: + if worker.is_alive(): + worker.kill() + killed_workers.append(worker) + except ValueError: + pass # worker is already closed for worker in killed_workers: worker.join() @@ -215,8 +224,8 @@ def exit(self, queue_type: WorkerManager.Queue, signum: Optional[int] = None): sys.exit() -def _format_exit_code(exitcode: int) -> str: - if exitcode >= 0: +def _format_exit_code(exitcode: Optional[int]) -> str: + if exitcode is None or exitcode >= 0: return f"exitcode={exitcode}" return f"signal={signal.Signals(-exitcode).name}" @@ -256,10 +265,8 @@ def get_runtime_manager(settings: Settings, queue: WorkerManager.Queue, log_leve if queue is WorkerManager.Queue.BOEFJES: item_handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository, bytes_api_client) else: - item_handler = NormalizerHandler( - LocalNormalizerJobRunner(local_repository), - bytes_api_client, - settings.scan_profile_whitelist, + item_handler = NormalizerHandler( # type: ignore + LocalNormalizerJobRunner(local_repository), bytes_api_client, settings.scan_profile_whitelist ) return SchedulerWorkerManager( diff --git a/boefjes/boefjes/clients/bytes_client.py b/boefjes/boefjes/clients/bytes_client.py index 69437c4a8da..53d1660cc89 100644 --- a/boefjes/boefjes/clients/bytes_client.py +++ b/boefjes/boefjes/clients/bytes_client.py @@ -1,7 +1,7 @@ import logging import typing from functools import wraps -from typing import Any, Callable, Dict, Set, Union +from typing import Any, Callable, Dict, FrozenSet, Union from uuid import UUID import requests @@ -103,7 +103,7 @@ def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: self._verify_response(response) @retry_with_login - def save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: Set[str] = frozenset()) -> UUID: + def save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: FrozenSet[str] = frozenset()) -> UUID: headers = {"content-type": "application/octet-stream"} headers.update(self.headers) diff --git a/boefjes/boefjes/clients/scheduler_client.py b/boefjes/boefjes/clients/scheduler_client.py index c1c879a1149..d4861346ee8 100644 --- a/boefjes/boefjes/clients/scheduler_client.py +++ b/boefjes/boefjes/clients/scheduler_client.py @@ -107,11 +107,11 @@ def push_item(self, queue_id: str, p_item: QueuePrioritizedItem) -> None: response = self._session.post(f"{self.base_url}/queues/{queue_id}/push", data=p_item.json()) self._verify_response(response) - def patch_task(self, task_id: str, status: TaskStatus) -> None: + def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: response = self._session.patch(f"{self.base_url}/tasks/{task_id}", json={"status": status.value}) self._verify_response(response) - def get_task(self, task_id: str) -> Task: + def get_task(self, task_id: uuid.UUID) -> Task: response = self._session.get(f"{self.base_url}/tasks/{task_id}") self._verify_response(response) diff --git a/boefjes/boefjes/config.py b/boefjes/boefjes/config.py index 73650508447..ea21fa1469c 100644 --- a/boefjes/boefjes/config.py +++ b/boefjes/boefjes/config.py @@ -52,7 +52,7 @@ class Settings(BaseSettings): "1.1.1.1", description="Name server used for remote DNS resolution in the boefje runner" ) - scan_profile_whitelist: Dict[str, conint(strict=True, ge=0, le=4)] = Field( + scan_profile_whitelist: Dict[str, conint(strict=True, ge=0, le=4)] = Field( # type: ignore default_factory=dict, description="Whitelist for normalizer ids allowed to produce scan profiles, including a maximum level.", examples=['{"kat_external_db_normalize": 3, "kat_dns_normalize": 1}'], diff --git a/boefjes/boefjes/docker_boefjes_runner.py b/boefjes/boefjes/docker_boefjes_runner.py index e9ff201ccb2..4b46e96d32d 100644 --- a/boefjes/boefjes/docker_boefjes_runner.py +++ b/boefjes/boefjes/docker_boefjes_runner.py @@ -35,7 +35,7 @@ def run(self) -> None: stderr_mime_types = boefjes.plugins.models._default_mime_types(self.boefje_meta.boefje) - task_id = str(self.boefje_meta.id) + task_id = self.boefje_meta.id self.scheduler_client.patch_task(task_id, TaskStatus.RUNNING) self.boefje_meta.started_at = datetime.now(timezone.utc) @@ -43,7 +43,7 @@ def run(self) -> None: input_url = str(settings.api).rstrip("/") + f"/api/v0/tasks/{task_id}" container_logs = self.docker_client.containers.run( image=self.boefje_resource.oci_image, - name="kat_boefje_" + task_id, + name="kat_boefje_" + str(task_id), command=input_url, stdout=False, stderr=True, diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index e9277598c09..e7b7c2c8b17 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -194,7 +194,7 @@ def __init__( ): self.job_runner = job_runner self.bytes_client: BytesAPIClient = bytes_client - self.whitelist = whitelist + self.whitelist = whitelist or {} self.octopoes_factory = octopoes_factory def handle(self, normalizer_meta: NormalizerMeta) -> None: diff --git a/boefjes/boefjes/katalogus/clients.py b/boefjes/boefjes/katalogus/clients.py index 7a740889cf1..27db5c3f022 100644 --- a/boefjes/boefjes/katalogus/clients.py +++ b/boefjes/boefjes/katalogus/clients.py @@ -44,4 +44,4 @@ def get_plugin(self, repository: Repository, plugin_id: str) -> PluginType: res = self._session.get(f"{repository.base_url}/plugins/{plugin_id}") res.raise_for_status() - return PluginType.model_validate_json(res.content) + return PluginType.model_validate_json(res.content) # type: ignore diff --git a/boefjes/boefjes/katalogus/dependencies/plugins.py b/boefjes/boefjes/katalogus/dependencies/plugins.py index d7ad0be3961..0fdbb55c465 100644 --- a/boefjes/boefjes/katalogus/dependencies/plugins.py +++ b/boefjes/boefjes/katalogus/dependencies/plugins.py @@ -60,7 +60,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): def get_all(self, organisation_id: str) -> List[PluginType]: all_plugins = self._plugins_for_repos(self.repository_storage.get_all().values(), organisation_id) - flat = [] + flat: List[PluginType] = [] for plugins in all_plugins.values(): flat.extend(plugins.values()) @@ -161,7 +161,7 @@ def update_by_id(self, repository_id: str, plugin_id: str, organisation_id: str, def _plugins_for_repos( self, repositories: Iterable[Repository], organisation_id: str ) -> Dict[str, Dict[str, PluginType]]: - plugins = {} + plugins: Dict[str, Dict[str, PluginType]] = {} for repository in repositories: if repository.id == RESERVED_LOCAL_ID: diff --git a/boefjes/boefjes/katalogus/local_repository.py b/boefjes/boefjes/katalogus/local_repository.py index bcd77940e4b..23644061562 100644 --- a/boefjes/boefjes/katalogus/local_repository.py +++ b/boefjes/boefjes/katalogus/local_repository.py @@ -2,7 +2,7 @@ import logging import pkgutil from pathlib import Path -from typing import Dict, List, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple from boefjes.katalogus.models import PluginType from boefjes.plugins.models import ( @@ -22,8 +22,8 @@ class LocalPluginRepository: def __init__(self, path: Path): self.path = path - self._cached_boefjes = None - self._cached_normalizers = None + self._cached_boefjes: Optional[Dict[str, Any]] = None + self._cached_normalizers: Optional[Dict[str, Any]] = None def get_all(self) -> List[PluginType]: all_plugins = [boefje_resource.boefje for boefje_resource in self.resolve_boefjes().values()] diff --git a/boefjes/boefjes/katalogus/storage/memory.py b/boefjes/boefjes/katalogus/storage/memory.py index 02e513497dc..5429775e8fe 100644 --- a/boefjes/boefjes/katalogus/storage/memory.py +++ b/boefjes/boefjes/katalogus/storage/memory.py @@ -1,4 +1,4 @@ -from typing import Dict, List +from typing import Dict, List, Optional from boefjes.katalogus.models import RESERVED_LOCAL_ID, Organisation, Repository from boefjes.katalogus.storage.interfaces import ( @@ -19,7 +19,7 @@ class OrganisationStorageMemory(OrganisationStorage): - def __init__(self, defaults: Dict[str, Organisation] = None): + def __init__(self, defaults: Optional[Dict[str, Organisation]] = None): self._data = organisations if defaults is None else defaults def get_by_id(self, organisation_id: str) -> Organisation: @@ -39,7 +39,7 @@ class RepositoryStorageMemory(RepositoryStorage): def __init__( self, organisation_id: str, - defaults: Dict[str, Repository] = None, + defaults: Optional[Dict[str, Repository]] = None, ): self._data = repositories.setdefault(organisation_id, {}) if defaults is None else defaults self._organisation_id = organisation_id @@ -84,7 +84,7 @@ class PluginStatesStorageMemory(PluginEnabledStorage): def __init__( self, organisation: str, - defaults: Dict[str, bool] = None, + defaults: Optional[Dict[str, bool]] = None, ): self._data = plugins_state.setdefault(organisation, {}) if defaults is None else defaults self._organisation = organisation diff --git a/boefjes/boefjes/katalogus/types.py b/boefjes/boefjes/katalogus/types.py index 563316999ea..f21ff77cce2 100644 --- a/boefjes/boefjes/katalogus/types.py +++ b/boefjes/boefjes/katalogus/types.py @@ -11,7 +11,7 @@ class PaginationParameters(BaseModel): offset: int = 0 - limit: Optional[int] = LIMIT + limit: int = LIMIT class FilterParameters(BaseModel): diff --git a/boefjes/boefjes/runtime_interfaces.py b/boefjes/boefjes/runtime_interfaces.py index a00d575573b..a955189b7d2 100644 --- a/boefjes/boefjes/runtime_interfaces.py +++ b/boefjes/boefjes/runtime_interfaces.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import Dict, Tuple, Union +from typing import Dict, List, Tuple, Union from boefjes.job_models import BoefjeMeta, NormalizerMeta, NormalizerOutput @@ -10,7 +10,7 @@ def handle(self, item: Union[BoefjeMeta, NormalizerMeta]): class BoefjeJobRunner: - def run(self, boefje_meta: BoefjeMeta, environment: Dict[str, str]) -> Tuple[BoefjeMeta, Union[str, bytes]]: + def run(self, boefje_meta: BoefjeMeta, environment: Dict[str, str]) -> List[Tuple[set, Union[bytes, str]]]: raise NotImplementedError() diff --git a/boefjes/boefjes/sql/plugin_enabled_storage.py b/boefjes/boefjes/sql/plugin_enabled_storage.py index 16adb3dffcd..293715bc89f 100644 --- a/boefjes/boefjes/sql/plugin_enabled_storage.py +++ b/boefjes/boefjes/sql/plugin_enabled_storage.py @@ -48,7 +48,7 @@ def get_all_enabled(self, organisation_id: str) -> Dict[str, List[str]]: .filter(PluginStateInDB.enabled) ) - per_repository = {} + per_repository: Dict[str, List[str]] = {} for state in query.all(): if state.repository.id not in per_repository: diff --git a/boefjes/tests/conftest.py b/boefjes/tests/conftest.py index 574bfd502c7..bd607bea64f 100644 --- a/boefjes/tests/conftest.py +++ b/boefjes/tests/conftest.py @@ -67,7 +67,7 @@ def patch_task(self, task_id: UUID, status: TaskStatus) -> None: with self.log_path.open("a") as f: f.write(f"{task_id},{status.value}\n") - task = self._task_from_id(task_id) if task_id not in self._tasks else self._tasks[str(task_id)] + task = self._task_from_id(task_id) if str(task_id) not in self._tasks else self._tasks[str(task_id)] task.status = status self._tasks[str(task_id)] = task @@ -76,7 +76,7 @@ def get_all_patched_tasks(self) -> List[Tuple[str, ...]]: return [tuple(x.strip().split(",")) for x in f] def get_task(self, task_id: UUID) -> Task: - return self._task_from_id(task_id) if task_id not in self._tasks else self._tasks[str(task_id)] + return self._task_from_id(task_id) if str(task_id) not in self._tasks else self._tasks[str(task_id)] def _task_from_id(self, task_id: UUID): return Task( diff --git a/boefjes/tests/test_app.py b/boefjes/tests/test_app.py index 3a2e2f6df06..05bc10a35d5 100644 --- a/boefjes/tests/test_app.py +++ b/boefjes/tests/test_app.py @@ -4,7 +4,8 @@ import pytest -from boefjes.app import SchedulerWorkerManager +from boefjes.app import SchedulerWorkerManager, get_runtime_manager +from boefjes.config import Settings from boefjes.runtime_interfaces import WorkerManager from tests.conftest import MockHandler, MockSchedulerClient from tests.loading import get_dummy_data @@ -151,3 +152,8 @@ def test_null(manager: SchedulerWorkerManager, tmp_path: Path, item_handler: Moc assert len(patched_tasks) == 3 assert patched_tasks[0] == ("70da7d4f-f41f-4940-901b-d98a92e9014b", "completed") assert patched_tasks[2] == ("70da7d4f-f41f-4940-901b-d98a92e9014b", "completed") + + +def test_create_manager(): + get_runtime_manager(Settings(), WorkerManager.Queue.BOEFJES, "INFO") + get_runtime_manager(Settings(), WorkerManager.Queue.NORMALIZERS, "INFO") From 65b620969499a061bfe73e02f73cb1eafe6f99e1 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Thu, 8 Feb 2024 13:12:04 +0100 Subject: [PATCH 23/85] Fix/normalizer produces, list was empty. is now populated and links to object page (#2411) Co-authored-by: Jeroen Dekkers Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> Co-authored-by: ammar92 --- rocky/katalogus/client.py | 30 ++++++++++++------- rocky/katalogus/templates/boefje_detail.html | 16 +++++----- .../templates/normalizer_detail.html | 19 ++++++++---- 3 files changed, 43 insertions(+), 22 deletions(-) diff --git a/rocky/katalogus/client.py b/rocky/katalogus/client.py index 28a1aa3cc5e..1b1520de048 100644 --- a/rocky/katalogus/client.py +++ b/rocky/katalogus/client.py @@ -1,4 +1,3 @@ -import contextlib import json from io import BytesIO from logging import getLogger @@ -30,7 +29,6 @@ class Plugin(BaseModel): related: List[str] = Field(default_factory=list) enabled: bool type: str - produces: Set[str] # def dict(self, *args, **kwargs): # """Pydantic does not stringify the OOI classes, but then templates can't render them""" @@ -45,6 +43,7 @@ class Boefje(Plugin): consumes: Set[Type[OOI]] options: List[str] = None runnable_hash: Optional[str] = None + produces: Set[str] # use a custom field_serializer for `consumes` @field_serializer("consumes") @@ -57,6 +56,12 @@ def can_scan(self, member) -> bool: class Normalizer(Plugin): consumes: Set[str] + produces: Set[Type[OOI]] + + # use a custom field_serializer for `produces` + @field_serializer("produces") + def serialize_produces(self, produces: Set[Type[OOI]]): + return {ooi_class.get_ooi_type() for ooi_class in produces} class KATalogusClientV1: @@ -87,7 +92,6 @@ def get_plugins(self, **params): def get_plugin(self, plugin_id: str) -> Union[Boefje, Normalizer]: response = self.session.get(f"{self.organization_uri}/plugins/{plugin_id}") response.raise_for_status() - return parse_plugin(response.json()) def get_plugin_schema(self, plugin_id) -> Optional[Dict]: @@ -99,8 +103,8 @@ def get_plugin_schema(self, plugin_id) -> Optional[Dict]: try: Draft202012Validator.check_schema(schema) return schema - except SchemaError: - logger.warning("Invalid schema found for plugin %s", plugin_id) + except SchemaError as error: + logger.warning("Invalid schema found for plugin %s, %s", plugin_id, error) def get_plugin_settings(self, plugin_id: str) -> Dict: response = self.session.get(f"{self.organization_uri}/{plugin_id}/settings") @@ -144,7 +148,10 @@ def disable_boefje(self, plugin: Boefje) -> None: self._patch_boefje_state(plugin.id, False, plugin.repository_id) def get_enabled_boefjes(self) -> List[Boefje]: - return [boefje for boefje in self.get_boefjes() if boefje.enabled] + return [plugin for plugin in self.get_boefjes() if plugin.enabled] + + def get_enabled_normalizers(self) -> List[Normalizer]: + return [plugin for plugin in self.get_normalizers() if plugin.enabled] def _patch_boefje_state(self, boefje_id: str, enabled: bool, repository_id: str) -> None: body = {"enabled": enabled} @@ -195,15 +202,18 @@ def parse_normalizer(normalizer: Dict) -> Normalizer: name = normalizer["id"].replace("_", " ").replace("kat ", "").title() consumes = set(normalizer["consumes"]) + consumes.add(f"normalizer/{normalizer['id']}") produces = set() - with contextlib.suppress(StopIteration): - consumes.add(f"normalizer/{name.lower()}") - produces.add(type_by_name(normalizer["produces"])) + for type_name in normalizer.get("produces", []): + try: + produces.add(type_by_name(type_name)) + except StopIteration: + logger.warning("Unknown OOI type %s for normalizer produces %s", type_name, normalizer["id"]) return Normalizer( id=normalizer["id"], repository_id=normalizer["repository_id"], - name=name or normalizer["id"], + name=name, description=normalizer["description"], enabled=normalizer["enabled"], type=normalizer["type"], diff --git a/rocky/katalogus/templates/boefje_detail.html b/rocky/katalogus/templates/boefje_detail.html index 3eb7d5730b7..8b9ae11e199 100644 --- a/rocky/katalogus/templates/boefje_detail.html +++ b/rocky/katalogus/templates/boefje_detail.html @@ -17,10 +17,12 @@

    {{ plugin.name }}

    {% include "partials/scan_level_indicator.html" with value=plugin.scan_level %} -

    - {% translate "Description" %} -

    -

    {{ plugin.description }}

    + {% if plugin.description %} +

    + {% translate "Description" %} +

    +

    {{ plugin.description }}

    + {% endif %}
    {% include "partials/enable_disable_plugin.html" with plugin=plugin %} @@ -48,9 +50,9 @@

    {% translate "Consumes" %}

    {% endblocktranslate %}

    - {% for ooi in plugin.consumes %} - {{ ooi }} - {% if ooi != plugin.consumes|last %}-{% endif %} + {% for ooi_type in plugin.consumes %} + {{ ooi_type }} + {% if not forloop.last %}-{% endif %} {% endfor %}

    {% else %} diff --git a/rocky/katalogus/templates/normalizer_detail.html b/rocky/katalogus/templates/normalizer_detail.html index 6524b6c95cd..162778077d2 100644 --- a/rocky/katalogus/templates/normalizer_detail.html +++ b/rocky/katalogus/templates/normalizer_detail.html @@ -11,10 +11,12 @@

    {{ plugin.name }}

    -

    - {% translate "Description" %} -

    -

    {{ plugin.description }}

    + {% if plugin.description %} +

    + {% translate "Description" %} +

    +

    {{ plugin.description }}

    + {% endif %}
    {% include "partials/enable_disable_plugin.html" with plugin=plugin %} @@ -62,7 +64,14 @@

    {% translate "Produces" %}

    {% endblocktranslate %}

    - {% for ooi in plugin.produces %}{{ ooi }}{% endfor %} + {% if plugin.produces %} + {% for ooi_type in plugin.produces %} + {{ ooi_type }} + {% if not forloop.last %}-{% endif %} + {% endfor %} + {% else %} + No known produces OOIs listed. N.B. This list might not be complete. + {% endif %}

    {% include "tasks/partials/normalizer_task_history.html" %} From 98c6558fa9d4354a086f2381e85b5ee8d67aeb24 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Thu, 8 Feb 2024 13:51:58 +0100 Subject: [PATCH 24/85] Add timeouts to CVE API downloader (#2455) Co-authored-by: Jan Klopper --- cveapi/Makefile | 20 ++++++++++++++++++++ cveapi/cveapi.py | 2 +- cveapi/debian/kat-cveapi.service | 1 + 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 cveapi/Makefile diff --git a/cveapi/Makefile b/cveapi/Makefile new file mode 100644 index 00000000000..e3566e6673e --- /dev/null +++ b/cveapi/Makefile @@ -0,0 +1,20 @@ +debian12: + mkdir -p build + docker run --rm \ + --env PKG_NAME=kat-cveapi \ + --env BUILD_DIR=./build \ + --env RELEASE_VERSION=${RELEASE_VERSION} \ + --env RELEASE_TAG=${RELEASE_TAG} \ + --mount type=bind,src=${CURDIR},dst=/app \ + --workdir /app \ + kat-debian12-build-image \ + packaging/scripts/build-debian-package.sh + +clean: + rm -rf build + rm -rf debian/kat-*/ debian/.debhelper debian/files *.egg-info/ dist/ + rm -f debian/debhelper-build-stamp + rm -f debian/*.*.debhelper + rm -f debian/*.substvars + rm -f debian/*.debhelper.log + rm -f debian/changelog diff --git a/cveapi/cveapi.py b/cveapi/cveapi.py index e96912d5392..8adc70ee428 100644 --- a/cveapi/cveapi.py +++ b/cveapi/cveapi.py @@ -26,7 +26,7 @@ def download_files(directory, last_update, update_timestamp): parameters = f"startIndex={index}" logger.debug("Parameters are %s", parameters) - r = session.get(f"https://services.nvd.nist.gov/rest/json/cves/2.0/?{(parameters)}") + r = session.get(f"https://services.nvd.nist.gov/rest/json/cves/2.0/?{(parameters)}", timeout=60) if r.status_code != 200: error_count += 1 if error_count == 5: diff --git a/cveapi/debian/kat-cveapi.service b/cveapi/debian/kat-cveapi.service index 3a50639be7b..e077cb441ea 100644 --- a/cveapi/debian/kat-cveapi.service +++ b/cveapi/debian/kat-cveapi.service @@ -29,3 +29,4 @@ LockPersonality=yes MemoryDenyWriteExecute=yes UMask=0022 ReadWritePaths=/var/lib/kat-cveapi +TimeoutStartSec=8h From 82cdbb73731ee27d5ec894d1bcd5a7262c85eabf Mon Sep 17 00:00:00 2001 From: Rieven Date: Thu, 8 Feb 2024 16:06:54 +0100 Subject: [PATCH 25/85] Select all OOIS for Aggregate Reports (#2222) Co-authored-by: ammar92 Co-authored-by: Jan Klopper Co-authored-by: Jeroen Dekkers Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> --- .../appendix.html | 8 +++ .../aggregate_organisation_report/report.py | 25 ++++---- .../templates/forms/report_form_fields.html | 8 +++ .../templates/partials/report_ooi_list.html | 16 ++++- .../templates/partials/report_setup_scan.html | 1 - .../partials/report_types_selection.html | 9 ++- .../templates/summary/ooi_selection.html | 2 + rocky/reports/views/aggregate_report.py | 32 +++++----- rocky/reports/views/base.py | 34 +++++++--- rocky/reports/views/generate_report.py | 21 +++---- rocky/reports/views/multi_report.py | 14 ++--- rocky/rocky/locale/django.pot | 37 +++++++++-- rocky/rocky/views/ooi_view.py | 63 +++++++++++++------ rocky/tests/integration/conftest.py | 18 ++++++ rocky/tests/integration/test_reports.py | 19 +++--- 15 files changed, 213 insertions(+), 94 deletions(-) diff --git a/rocky/reports/report_types/aggregate_organisation_report/appendix.html b/rocky/reports/report_types/aggregate_organisation_report/appendix.html index b13ba1dfeab..845f75997ce 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/appendix.html +++ b/rocky/reports/report_types/aggregate_organisation_report/appendix.html @@ -6,6 +6,14 @@

    {% translate "Appendix" %}

    {% include "aggregate_organisation_report/term_overview.html" %}

    {% translate "Selected objects" %}

    + {% if active_filters %} +

    + {% translate "Currently filtered on" %} +

    +

    + {% for filter, value in active_filters.items %}{{ filter }}{{ value }} {% endfor %} +

    + {% endif %} {% include "summary/ooi_selection.html" %}
    diff --git a/rocky/reports/report_types/aggregate_organisation_report/report.py b/rocky/reports/report_types/aggregate_organisation_report/report.py index 01c2f4c4c97..dcac89e824a 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/report.py +++ b/rocky/reports/report_types/aggregate_organisation_report/report.py @@ -5,10 +5,10 @@ from django.utils.translation import gettext_lazy as _ from octopoes.connector.octopoes import OctopoesAPIConnector -from octopoes.models import Reference +from octopoes.models import OOI, Reference from octopoes.models.exception import ObjectNotFoundException from octopoes.models.ooi.config import Config -from reports.report_types.definitions import AggregateReport, ReportType +from reports.report_types.definitions import AggregateReport from reports.report_types.ipv6_report.report import IPv6Report from reports.report_types.mail_report.report import MailReport from reports.report_types.name_server_report.report import NameServerSystemReport @@ -442,8 +442,8 @@ def collect_system_specific_data(self, data, services, system_type: SystemType, def aggregate_reports( connector: OctopoesAPIConnector, - input_ooi_references: List[str], - selected_report_types: List[ReportType], + input_ooi_references: List[OOI], + selected_report_types: List[str], valid_time: datetime, ): aggregate_report = AggregateOrganisationReport(connector) @@ -451,19 +451,20 @@ def aggregate_reports( error_oois = [] for ooi in input_ooi_references: - report_data[ooi] = {} + report_data[ooi.primary_key] = {} try: for options, report_types in aggregate_report.reports.items(): for report_type in report_types: - if Reference.from_str(ooi).class_type in report_type.input_ooi_types and report_type.id in [ - report.id for report in selected_report_types - ]: + if ( + Reference.from_str(ooi).class_type in report_type.input_ooi_types + and report_type.id in selected_report_types + ): report = report_type(connector) - data = report.generate_data(ooi, valid_time=valid_time) - report_data[ooi][report_type.id] = data + data = report.generate_data(ooi.primary_key, valid_time=valid_time) + report_data[ooi.primary_key][report_type.id] = data except ObjectNotFoundException: - logger.error("Object not found: %s", ooi) - error_oois.append(ooi) + logger.error("Object not found: %s", ooi.primary_key) + error_oois.append(ooi.primary_key) post_processed_data = aggregate_report.post_process_data(report_data, valid_time=valid_time) return aggregate_report, post_processed_data, report_data, error_oois diff --git a/rocky/reports/templates/forms/report_form_fields.html b/rocky/reports/templates/forms/report_form_fields.html index 7617bada887..75c2d9cb527 100644 --- a/rocky/reports/templates/forms/report_form_fields.html +++ b/rocky/reports/templates/forms/report_form_fields.html @@ -1,6 +1,14 @@ +{% for ooi in selected_oois %}{% endfor %} +{% for ooi_type in ooi_types_selection %}{% endfor %} +{% for clearance_level in clearance_levels_selection %} + +{% endfor %} +{% for clearance_type in clearance_types_selection %} + +{% endfor %} {% if plugins.required %} {% for required_plugin in plugins.required %} diff --git a/rocky/reports/templates/partials/report_ooi_list.html b/rocky/reports/templates/partials/report_ooi_list.html index 7e0e7c369b3..abcc6d61022 100644 --- a/rocky/reports/templates/partials/report_ooi_list.html +++ b/rocky/reports/templates/partials/report_ooi_list.html @@ -34,6 +34,20 @@

    {% include "forms/report_form_fields.html" %} + {% if channel != "generate_report" %} +

    + {% translate "Explanation 'Continue with all OOIs'" %}: + {% blocktrans trimmed %} + This option will select all OOIs (+ current filters) + for {{ organization }} organization. + {% endblocktrans %} +

    + + {% endif %}

    {% translate "Other records found" %}
    {% translate "Record" %}{% translate "Value" %}{% translate "Found by" %}{% translate "Name" %}{% translate "TTL" %}{% translate "Data" %}
    {{ ooi.human_readable }}{{ ooi.type }}{{ ooi.name }}{{ ooi.ttl }} {% translate "minutes" %} {{ ooi.content }}{{ ooi.origin }}
    @@ -63,7 +77,7 @@

    {% translate "Objects:" %}
    {% include "partials/list_paginator.html" %} diff --git a/rocky/reports/templates/partials/report_setup_scan.html b/rocky/reports/templates/partials/report_setup_scan.html index a38c49f2a01..ec1d57a18dc 100644 --- a/rocky/reports/templates/partials/report_setup_scan.html +++ b/rocky/reports/templates/partials/report_setup_scan.html @@ -41,7 +41,6 @@

    {% translate "Suggested plugins" %}

    {% include "forms/report_form_fields.html" %} - {% for ooi in selected_oois %}{% endfor %} {% for report_type in selected_report_types %} {% endfor %} diff --git a/rocky/reports/templates/partials/report_types_selection.html b/rocky/reports/templates/partials/report_types_selection.html index 975a034aa2c..14b48490571 100644 --- a/rocky/reports/templates/partials/report_types_selection.html +++ b/rocky/reports/templates/partials/report_types_selection.html @@ -25,8 +25,12 @@

    Selected objects {% endblocktranslate %}

    - {% include "summary/ooi_selection.html" %} + {% if 'all' in oois %} +

    {% translate "You have selected all objects in previous step." %}

    + {% else %} + {% include "summary/ooi_selection.html" %} + {% endif %} {% translate "Change selection" %} @@ -38,7 +42,8 @@

    {% translate "Available report types" %} ({{ available_report_types|length }

    {% translate "All report types that are available for your selection." %}

    {% translate "Toggle all report types" %} - {% for ooi in selected_oois %}{% endfor %} + {% include "forms/report_form_fields.html" %} +
    {% if available_report_types_aggregate %} {% include "partials/report_types_tiles_required_optional.html" with report_types=available_report_types_aggregate %} diff --git a/rocky/reports/templates/summary/ooi_selection.html b/rocky/reports/templates/summary/ooi_selection.html index c2339e7607b..bd0068fe44f 100644 --- a/rocky/reports/templates/summary/ooi_selection.html +++ b/rocky/reports/templates/summary/ooi_selection.html @@ -7,6 +7,7 @@ {% translate "Object" %} {% translate "Type" %} {% translate "Clearance level" %} + {% translate "Clearance type" %} @@ -18,6 +19,7 @@ {% include "partials/scan_level_indicator.html" with value=ooi.scan_profile.level.value custom_class="left" %} + {{ ooi.scan_profile.scan_profile_type|title }} {% endfor %} diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index 759e5c4c864..638eb60a9d7 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -17,10 +17,7 @@ get_report_types_from_aggregate_report, ) from reports.utils import JSONEncoder, debug_json_keys -from reports.views.base import ( - BaseReportView, - ReportBreadcrumbs, -) +from reports.views.base import REPORTS_PRE_SELECTION, BaseReportView, ReportBreadcrumbs, get_selection from rocky.views.ooi_view import BaseOOIListView @@ -28,7 +25,7 @@ class BreadcrumbsAggregateReportView(ReportBreadcrumbs): def build_breadcrumbs(self): breadcrumbs = super().build_breadcrumbs() kwargs = self.get_kwargs() - selection = self.get_selection() + selection = get_selection(self.request) breadcrumbs += [ { "url": reverse("aggregate_report_landing", kwargs=kwargs) + selection, @@ -54,19 +51,16 @@ def build_breadcrumbs(self): return breadcrumbs -class LandingAggregateReportView(BreadcrumbsAggregateReportView, TemplateView): +class LandingAggregateReportView(BreadcrumbsAggregateReportView, BaseReportView): """ Landing page to start the 'Aggregate Report' flow. """ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: - kwargs = self.get_kwargs() - pre_selection = { - "clearance_level": ["2", "3", "4"], - "clearance_type": "declared", - } - selection = self.get_selection(pre_selection) - return redirect(reverse("aggregate_report_select_oois", kwargs=kwargs) + selection) + return redirect( + reverse("aggregate_report_select_oois", kwargs=self.get_kwargs()) + + get_selection(request, REPORTS_PRE_SELECTION) + ) class OOISelectionAggregateReportView(BreadcrumbsAggregateReportView, BaseOOIListView, BaseReportView): @@ -81,6 +75,7 @@ class OOISelectionAggregateReportView(BreadcrumbsAggregateReportView, BaseOOILis def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update(self.get_ooi_filter_forms(self.ooi_types)) + context["channel"] = "aggregate_report" return context @@ -106,7 +101,10 @@ def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["oois"] = self.get_oois() + if "all" not in self.selected_oois: + context["oois"] = self.get_oois() + else: + context["oois"] = "all" context["available_report_types_aggregate"] = self.available_report_types context["count_available_report_types_aggregate"] = len(self.available_report_types["required"]) + len( self.available_report_types["optional"] @@ -140,6 +138,7 @@ class AggregateReportView(BreadcrumbsAggregateReportView, BaseReportView, Templa template_name = "aggregate_report.html" current_step = 6 + ooi_types = get_ooi_types_from_aggregate_report(AggregateOrganisationReport) def get(self, request, *args, **kwargs): if "json" in self.request.GET and self.request.GET["json"] == "true": @@ -172,7 +171,7 @@ def get(self, request, *args, **kwargs): def generate_reports_for_oois(self) -> Tuple[AggregateOrganisationReport, Any, Dict[Any, Dict[Any, Any]]]: aggregate_report, post_processed_data, report_data, error_oois = aggregate_reports( - self.octopoes_api_connector, self.selected_oois, self.report_types, self.valid_time + self.octopoes_api_connector, self.get_oois(), self.selected_report_types, self.valid_time ) # If OOI could not be found or the date is incorrect, it will be shown to the user as a message error @@ -204,6 +203,9 @@ def get_context_data(self, **kwargs): True, **dict(json="true", **self.request.GET), ) + + context["oois"] = self.get_oois() + context["plugins"] = self.get_required_optional_plugins(get_plugins_for_report_ids(self.selected_report_types)) return context diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index 1584d4e1985..76bd371d090 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -19,7 +19,20 @@ from reports.forms import OOITypeMultiCheckboxForReportForm from reports.report_types.definitions import Report, ReportType from reports.report_types.helpers import get_plugins_for_report_ids, get_report_by_id -from rocky.views.mixins import OctopoesView +from rocky.views.mixins import OOIList +from rocky.views.ooi_view import OOIFilterView + +REPORTS_PRE_SELECTION = { + "clearance_level": ["2", "3", "4"], + "clearance_type": "declared", +} + + +def get_selection(request: HttpRequest, pre_selection: Optional[Dict[str, Union[str, List[str]]]] = None) -> str: + if pre_selection is not None: + return "?" + urlencode(pre_selection, True) + return "?" + urlencode(request.GET, True) + logger = getLogger(__name__) @@ -27,17 +40,12 @@ class ReportBreadcrumbs(OrganizationView, BreadcrumbsMixin): current_step: int = 1 - def get_selection(self, pre_selection: Optional[Dict[str, Union[str, List[str]]]] = None) -> str: - if pre_selection: - return "?" + urlencode(pre_selection, True) - return "?" + urlencode(self.request.GET, True) - def get_kwargs(self): return {"organization_code": self.organization.code} def build_breadcrumbs(self): kwargs = self.get_kwargs() - selection = self.get_selection() + selection = get_selection(self.request) breadcrumbs = [ { @@ -68,10 +76,9 @@ def get_context_data(self, **kwargs): return context -class BaseReportView(OctopoesView): +class BaseReportView(OOIFilterView): def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) - self.valid_time = self.get_observed_at() self.selected_oois = request.GET.getlist("ooi", []) self.selected_report_types = request.GET.getlist("report_type", []) @@ -80,6 +87,15 @@ def setup(self, request, *args, **kwargs): self.plugins = self.get_required_optional_plugins(get_plugins_for_report_ids(report_ids)) def get_oois(self) -> List[OOI]: + if "all" in self.selected_oois: + return self.octopoes_api_connector.list( + self.get_ooi_types(), + valid_time=self.valid_time, + limit=OOIList.HARD_LIMIT, + scan_level=self.get_ooi_scan_levels(), + scan_profile_type=self.get_ooi_profile_types(), + ).items + oois = [] for ooi_id in self.selected_oois: try: diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index 4aa50c0ad8a..ddd32866e39 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -16,10 +16,7 @@ get_plugins_for_report_ids, get_report_types_for_oois, ) -from reports.views.base import ( - BaseReportView, - ReportBreadcrumbs, -) +from reports.views.base import REPORTS_PRE_SELECTION, BaseReportView, ReportBreadcrumbs, get_selection from rocky.views.ooi_view import BaseOOIListView @@ -27,7 +24,7 @@ class BreadcrumbsGenerateReportView(ReportBreadcrumbs): def build_breadcrumbs(self): breadcrumbs = super().build_breadcrumbs() kwargs = self.get_kwargs() - selection = self.get_selection() + selection = get_selection(self.request) breadcrumbs += [ { "url": reverse("generate_report_landing", kwargs=kwargs) + selection, @@ -53,19 +50,16 @@ def build_breadcrumbs(self): return breadcrumbs -class LandingGenerateReportView(BreadcrumbsGenerateReportView, TemplateView): +class LandingGenerateReportView(BreadcrumbsGenerateReportView, BaseReportView): """ Landing page to start the 'Generate Report' flow. """ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: - kwargs = self.get_kwargs() - pre_selection = { - "clearance_level": ["2", "3", "4"], - "clearance_type": "declared", - } - selection = self.get_selection(pre_selection) - return redirect(reverse("generate_report_select_oois", kwargs=kwargs) + selection) + return redirect( + reverse("generate_report_select_oois", kwargs=self.get_kwargs()) + + get_selection(request, REPORTS_PRE_SELECTION) + ) class OOISelectionGenerateReportView(BreadcrumbsGenerateReportView, BaseReportView, BaseOOIListView): @@ -79,6 +73,7 @@ class OOISelectionGenerateReportView(BreadcrumbsGenerateReportView, BaseReportVi def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + context["channel"] = "generate_report" context.update(self.get_ooi_filter_forms(self.ooi_types)) return context diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index 2500344b195..fb747871839 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -10,10 +10,7 @@ from tools.view_helpers import url_with_querystring from reports.report_types.multi_organization_report.report import MultiOrganizationReport, collect_report_data -from reports.views.base import ( - BaseReportView, - ReportBreadcrumbs, -) +from reports.views.base import REPORTS_PRE_SELECTION, BaseReportView, ReportBreadcrumbs, get_selection from rocky.views.ooi_view import BaseOOIListView @@ -21,7 +18,7 @@ class BreadcrumbsMultiReportView(ReportBreadcrumbs): def build_breadcrumbs(self): breadcrumbs = super().build_breadcrumbs() kwargs = self.get_kwargs() - selection = self.get_selection() + selection = get_selection(self.request) breadcrumbs += [ { "url": reverse("multi_report_landing", kwargs=kwargs) + selection, @@ -47,13 +44,16 @@ def build_breadcrumbs(self): return breadcrumbs -class LandingMultiReportView(BreadcrumbsMultiReportView, TemplateView): +class LandingMultiReportView(BreadcrumbsMultiReportView, BaseReportView): """ Landing page to start the 'Multi Report' flow. """ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: - return redirect(reverse("multi_report_select_oois", kwargs=self.get_kwargs())) + return redirect( + reverse("multi_report_select_oois", kwargs=self.get_kwargs()) + + get_selection(self.request, REPORTS_PRE_SELECTION) + ) class OOISelectionMultiReportView(BreadcrumbsMultiReportView, BaseReportView, BaseOOIListView): diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 9ed40fc961a..370284c5482 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-06 07:57+0000\n" +"POT-Creation-Date: 2024-01-30 11:07+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2711,6 +2711,10 @@ msgstr "" msgid "Selected objects" msgstr "" +#: reports/report_types/aggregate_organisation_report/appendix.html +msgid "Currently filtered on" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/partials/report_sidemenu.html #: reports/templates/summary/report_summary.html @@ -3780,17 +3784,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -3882,19 +3907,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index cecb48fda7e..6fcdbb63aef 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -17,49 +17,78 @@ from octopoes.models import OOI, ScanLevel, ScanProfileType from octopoes.models.ooi.findings import Finding, FindingType from octopoes.models.types import get_collapsed_types, type_by_name -from rocky.views.mixins import ConnectorFormMixin, OctopoesView, OOIList, SingleOOIMixin, SingleOOITreeMixin +from rocky.views.mixins import ( + ConnectorFormMixin, + OctopoesView, + OOIList, + SingleOOIMixin, + SingleOOITreeMixin, +) -class BaseOOIListView(ConnectorFormMixin, OctopoesView, ListView): +class OOIFilterView(ConnectorFormMixin, OctopoesView): + """ + Shows filter options with different filter forms and handles filter requests for OOIs. + """ + connector_form_class = ObservedAtForm - paginate_by = 150 - context_object_name = "ooi_list" ooi_types = get_collapsed_types().difference({Finding, FindingType}) scan_levels = DEFAULT_SCAN_LEVEL_FILTER scan_profile_types = DEFAULT_SCAN_PROFILE_TYPE_FILTER def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) + self.valid_time = self.get_observed_at() self.filtered_ooi_types = request.GET.getlist("ooi_type", []) - self.clearance_level = request.GET.getlist("clearance_level", []) - self.clearance_type = request.GET.getlist("clearance_type", []) + self.clearance_levels = request.GET.getlist("clearance_level", []) + self.clearance_types = request.GET.getlist("clearance_type", []) def get_active_filters(self) -> Dict[str, str]: active_filters = {} if self.filtered_ooi_types: active_filters[_("OOI types: ")] = ", ".join(self.filtered_ooi_types) - if self.clearance_level: - clearance_level = ["L" + str(level) for level in self.clearance_level] + if self.clearance_levels: + clearance_level = ["L" + str(cl) for cl in self.clearance_levels] active_filters[_("Clearance level: ")] = ", ".join(clearance_level) - if self.clearance_type: - active_filters[_("Clearance type: ")] = ", ".join(self.clearance_type) + if self.clearance_types: + active_filters[_("Clearance type: ")] = ", ".join(self.clearance_types) return active_filters def get_ooi_scan_levels(self) -> Set[ScanLevel]: - if not self.clearance_level: + if not self.clearance_levels: return self.scan_levels - return {ScanLevel(int(s)) for s in self.clearance_level} + return {ScanLevel(int(cl)) for cl in self.clearance_levels} def get_ooi_profile_types(self) -> Set[ScanProfileType]: - if not self.clearance_type: + if not self.clearance_types: return self.scan_profile_types - return {ScanProfileType(s) for s in self.clearance_type} + return {ScanProfileType(ct) for ct in self.clearance_types} def get_ooi_types(self) -> Set[Type[OOI]]: if not self.filtered_ooi_types: return self.ooi_types return {type_by_name(t) for t in self.filtered_ooi_types if t not in _EXCLUDED_OOI_TYPES} + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["observed_at"] = self.valid_time + context["observed_at_form"] = self.get_connector_form() + + context["ooi_types_selection"] = self.filtered_ooi_types + + context["clearance_levels_selection"] = self.clearance_levels + context["clearance_level_filter_form"] = ClearanceFilterForm(self.request.GET) + + context["clearance_types_selection"] = self.clearance_types + + context["active_filters"] = self.get_active_filters() + return context + + +class BaseOOIListView(OOIFilterView, ListView): + paginate_by = 150 + context_object_name = "ooi_list" + def get_queryset(self) -> OOIList: return OOIList( self.octopoes_api_connector, @@ -72,11 +101,7 @@ def get_queryset(self) -> OOIList: def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["mandatory_fields"] = get_mandatory_fields(self.request) - context["observed_at_form"] = self.get_connector_form() - context["observed_at"] = self.get_observed_at() - context["total_oois"] = len(self.object_list) - context["clearance_level_filter_form"] = ClearanceFilterForm(self.request.GET) - context["active_filters"] = self.get_active_filters() + context["total_oois"] = len(self.object_list) # will be auto set on get_queryset() return context diff --git a/rocky/tests/integration/conftest.py b/rocky/tests/integration/conftest.py index bcac0ba8308..47fab357cfb 100644 --- a/rocky/tests/integration/conftest.py +++ b/rocky/tests/integration/conftest.py @@ -9,6 +9,7 @@ from octopoes.api.models import Declaration, Observation from octopoes.connector.octopoes import OctopoesAPIConnector +from octopoes.models import DeclaredScanProfile, Reference from octopoes.models.ooi.certificate import X509Certificate from octopoes.models.ooi.dns.zone import Hostname, ResolvedHostname from octopoes.models.ooi.findings import CVEFindingType, KATFindingType, RetireJSFindingType, RiskLevelSeverity @@ -187,3 +188,20 @@ def seed_system( "security_txts": security_txts, "certificates": certificates, } + + +@pytest.fixture() +def hostname_oois(): + return [ + Hostname( + object_type="Hostname", + scan_profile=DeclaredScanProfile( + scan_profile_type="declared", reference=Reference("Hostname|test|example.com"), level=2 + ), + primary_key="Hostname|test|example.com", + network=Reference("Network|test"), + name="example.com", + dns_zone=Reference("DNSZone|test|example.com"), + registered_domain=None, + ) + ] diff --git a/rocky/tests/integration/test_reports.py b/rocky/tests/integration/test_reports.py index 5b0a473eac2..81d501f54be 100644 --- a/rocky/tests/integration/test_reports.py +++ b/rocky/tests/integration/test_reports.py @@ -92,11 +92,12 @@ def test_system_report(octopoes_api_connector: OctopoesAPIConnector, valid_time) } -def test_aggregate_report(octopoes_api_connector: OctopoesAPIConnector, valid_time): +def test_aggregate_report(octopoes_api_connector: OctopoesAPIConnector, valid_time, hostname_oois): seed_system(octopoes_api_connector, valid_time) reports = AggregateOrganisationReport.reports["required"] + AggregateOrganisationReport.reports["optional"] - _, data, _, _ = aggregate_reports(octopoes_api_connector, ["Hostname|test|example.com"], reports, valid_time) + report_ids = [report_type.id for report_type in reports] + _, data, _, _ = aggregate_reports(octopoes_api_connector, hostname_oois, report_ids, valid_time) v4_test_hostnames = [ "Hostname|test|a.example.com", @@ -221,7 +222,10 @@ def test_aggregate_report(octopoes_api_connector: OctopoesAPIConnector, valid_ti def test_multi_report( - octopoes_api_connector: OctopoesAPIConnector, octopoes_api_connector_2: OctopoesAPIConnector, valid_time + octopoes_api_connector: OctopoesAPIConnector, + octopoes_api_connector_2: OctopoesAPIConnector, + valid_time, + hostname_oois, ): seed = seed_system(octopoes_api_connector, valid_time) seed_system(octopoes_api_connector_2, valid_time) @@ -235,12 +239,9 @@ def test_multi_report( octopoes_api_connector.save_declaration(Declaration(ooi=finding, valid_time=valid_time)) reports = AggregateOrganisationReport.reports["required"] + AggregateOrganisationReport.reports["optional"] - _, data, report_data, _ = aggregate_reports( - octopoes_api_connector, ["Hostname|test|example.com"], reports, valid_time - ) - _, data_2, report_data_2, _ = aggregate_reports( - octopoes_api_connector_2, ["Hostname|test|example.com"], reports, valid_time - ) + report_ids = [report_type.id for report_type in reports] + _, data, report_data, _ = aggregate_reports(octopoes_api_connector, hostname_oois, report_ids, valid_time) + _, data_2, report_data_2, _ = aggregate_reports(octopoes_api_connector_2, hostname_oois, report_ids, valid_time) report_data = ReportData( organization_code=octopoes_api_connector.client, From 9ae8fd4d74e332afbe101418d3148538ac02b27c Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Fri, 9 Feb 2024 10:41:29 +0100 Subject: [PATCH 26/85] Update Starlette, FastAPI and Django (#2480) --- boefjes/poetry.lock | 18 +++++++++--------- boefjes/requirements-dev.txt | 12 ++++++------ boefjes/requirements.txt | 12 ++++++------ bytes/poetry.lock | 16 ++++++++-------- bytes/requirements-dev.txt | 12 ++++++------ bytes/requirements.txt | 12 ++++++------ keiko/poetry.lock | 26 ++++++++------------------ keiko/requirements-dev.txt | 24 +++++++----------------- keiko/requirements.txt | 24 +++++++----------------- mula/poetry.lock | 16 ++++++++-------- mula/requirements-dev.txt | 12 ++++++------ mula/requirements.txt | 12 ++++++------ octopoes/poetry.lock | 17 ++++++++--------- octopoes/requirements-dev.txt | 13 ++++++------- octopoes/requirements.txt | 13 ++++++------- rocky/poetry.lock | 6 +++--- rocky/requirements-dev.txt | 6 +++--- rocky/requirements.txt | 6 +++--- 18 files changed, 112 insertions(+), 145 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index c95bfd8e4ec..8e7568767b4 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "aiohttp" @@ -652,18 +652,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -2531,13 +2531,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -2545,7 +2545,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "tldextract" diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 0e40e2d5f84..3b0eb864861 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -318,9 +318,9 @@ docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1248,9 +1248,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index a936b7d5938..f8c6a9dce5e 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -318,9 +318,9 @@ docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1236,9 +1236,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 diff --git a/bytes/poetry.lock b/bytes/poetry.lock index c02678501b2..47d55ab839c 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -478,18 +478,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -1788,13 +1788,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -1802,7 +1802,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "toml" diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index d3e977870fb..9cc4876e1e3 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -245,9 +245,9 @@ ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -781,9 +781,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 toml==0.10.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f diff --git a/bytes/requirements.txt b/bytes/requirements.txt index aa539b9cbd6..ec1de86209e 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -239,9 +239,9 @@ ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -704,9 +704,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd diff --git a/keiko/poetry.lock b/keiko/poetry.lock index e6c1d8fdc85..bc187fd7ada 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -232,18 +232,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -497,16 +497,6 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1196,13 +1186,13 @@ files = [ [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -1210,7 +1200,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "tomli" diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index a2e142de512..1e989365703 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -116,9 +116,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -206,11 +206,8 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -218,7 +215,6 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -227,7 +223,6 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -235,12 +230,9 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -259,9 +251,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -453,9 +443,9 @@ setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f diff --git a/keiko/requirements.txt b/keiko/requirements.txt index bc87b2ff0e0..b1f22f39801 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -116,9 +116,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -194,11 +194,8 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -206,7 +203,6 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -215,7 +211,6 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -223,12 +218,9 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -247,9 +239,7 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -399,9 +389,9 @@ setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd diff --git a/mula/poetry.lock b/mula/poetry.lock index 911f5296554..6787d2e64f3 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -364,18 +364,18 @@ typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\ [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -1537,13 +1537,13 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -1551,7 +1551,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "structlog" diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index f0208e72f0c..7a84aee1376 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -181,9 +181,9 @@ factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -723,9 +723,9 @@ sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 structlog==23.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:24b42b914ac6bc4a4e6f716e82ac70d7fb1e8c3b1035a765591953bfc37101a5 \ --hash=sha256:d6922a88ceabef5b13b9eda9c4043624924f60edbb00397f4d193bd754cde60a diff --git a/mula/requirements.txt b/mula/requirements.txt index caf1852e194..9afb083665b 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -122,9 +122,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -620,9 +620,9 @@ sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 structlog==23.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:24b42b914ac6bc4a4e6f716e82ac70d7fb1e8c3b1035a765591953bfc37101a5 \ --hash=sha256:d6922a88ceabef5b13b9eda9c4043624924f60edbb00397f4d193bd754cde60a diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index 7913dc10705..d45f567384d 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -520,18 +520,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -1661,7 +1661,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -2106,13 +2105,13 @@ sqlcipher = ["sqlcipher3-binary"] [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] @@ -2120,7 +2119,7 @@ anyio = ">=3.4.0,<5" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "tldextract" diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index 834c3318957..56782e4b367 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -230,9 +230,9 @@ dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -671,7 +671,6 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -876,9 +875,9 @@ sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb0808ad34167f394fea21bd4587fc62f3bd81bba232a1e7fbdfa17e6cfa7cd7 \ --hash=sha256:fbde5642104ac6e95f96e8ad6d18d9382aa20672008cf26068fe36f3004491df \ --hash=sha256:fe1dd2562313dd9fe1778ed56739ad5d9aae10f9f43d9f4cf81d65b0c85168bb -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index e6101ca47ce..95df191aaaa 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -174,9 +174,9 @@ dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -506,7 +506,6 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -688,9 +687,9 @@ sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb0808ad34167f394fea21bd4587fc62f3bd81bba232a1e7fbdfa17e6cfa7cd7 \ --hash=sha256:fbde5642104ac6e95f96e8ad6d18d9382aa20672008cf26068fe36f3004491df \ --hash=sha256:fe1dd2562313dd9fe1778ed56739ad5d9aae10f9f43d9f4cf81d65b0c85168bb -starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 diff --git a/rocky/poetry.lock b/rocky/poetry.lock index f68033d7c0d..256e81d0f5c 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -707,13 +707,13 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] [[package]] name = "django" -version = "4.2.9" +version = "4.2.10" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.2.9-py3-none-any.whl", hash = "sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984"}, - {file = "Django-4.2.9.tar.gz", hash = "sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14"}, + {file = "Django-4.2.10-py3-none-any.whl", hash = "sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1"}, + {file = "Django-4.2.10.tar.gz", hash = "sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13"}, ] [package.dependencies] diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index 60452262777..8b5c8e77e87 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -442,9 +442,9 @@ django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4 django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.9 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14 \ - --hash=sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984 +django==4.2.10 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1 \ + --hash=sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13 djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 diff --git a/rocky/requirements.txt b/rocky/requirements.txt index 712c5900254..185f7600073 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -383,9 +383,9 @@ django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4 django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.9 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:12498cc3cb8bc8038539fef9e90e95f507502436c1f0c3a673411324fa675d14 \ - --hash=sha256:2cc2fc7d1708ada170ddd6c99f35cc25db664f165d3794bc7723f46b2f8c8984 +django==4.2.10 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1 \ + --hash=sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13 djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 From 84f714a3dd1e95fa3b9ca34f49e5af1b40aefb89 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Sun, 11 Feb 2024 16:26:57 +0100 Subject: [PATCH 27/85] Do not log an error on token refresh in bytes client (#2469) Co-authored-by: Jan Klopper --- boefjes/boefjes/clients/bytes_client.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/boefjes/boefjes/clients/bytes_client.py b/boefjes/boefjes/clients/bytes_client.py index 53d1660cc89..4544560e7b1 100644 --- a/boefjes/boefjes/clients/bytes_client.py +++ b/boefjes/boefjes/clients/bytes_client.py @@ -38,7 +38,7 @@ def wrapper(self, *args, **kwargs): # type: ignore return function(self, *args, **kwargs) except HTTPError as error: if error.response.status_code != 401: - raise error from HTTPError + raise self.login() return function(self, *args, **kwargs) @@ -67,8 +67,11 @@ def login(self) -> None: def _verify_response(response: requests.Response) -> None: try: response.raise_for_status() - except HTTPError: - logger.error(response.text) + except HTTPError as error: + if error.response.status_code != 401: + logger.error(response.text) + else: + logger.debug(response.text) raise def _get_authentication_headers(self) -> Dict[str, str]: From 32db2cc4de033a35afce0731090e117864a1a10e Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 10:47:48 +0100 Subject: [PATCH 28/85] Enable ruff bandit checks (#2465) Co-authored-by: Jan Klopper --- boefjes/boefjes/job_handler.py | 3 ++- .../katalogus/tests/integration/test_api.py | 2 +- .../tests/integration/test_migrations.py | 2 +- .../tests/integration/test_sql_repositories.py | 2 +- ...dfafdaf_json_settings_for_settings_table.py | 8 ++++---- .../boefjes/plugins/kat_burpsuite/normalize.py | 2 +- boefjes/boefjes/plugins/kat_crt_sh/main.py | 2 +- .../boefjes/plugins/kat_cve_2023_34039/main.py | 4 ++-- .../boefjes/plugins/kat_cve_2023_35078/main.py | 2 +- .../plugins/kat_cve_finding_types/main.py | 2 +- .../plugins/kat_cwe_finding_types/main.py | 3 ++- .../boefjes/plugins/kat_green_hosting/main.py | 2 +- boefjes/boefjes/plugins/kat_leakix/main.py | 1 + boefjes/boefjes/plugins/kat_log4shell/main.py | 4 ++-- boefjes/boefjes/plugins/kat_masscan/main.py | 2 +- .../plugins/kat_retirejs_finding_types/main.py | 4 +++- boefjes/boefjes/plugins/kat_rpki/main.py | 2 +- .../kat_security_txt_downloader/main.py | 2 +- boefjes/boefjes/plugins/kat_snyk/main.py | 4 ++-- .../plugins/kat_snyk_finding_types/main.py | 2 +- .../boefjes/plugins/kat_ssl_scan/normalize.py | 3 ++- .../plugins/kat_webpage_capture/main.py | 3 ++- boefjes/poetry.lock | 13 ++++++++++++- boefjes/pyproject.toml | 2 ++ boefjes/requirements-dev.txt | 3 +++ boefjes/requirements.txt | 3 +++ bytes/tests/integration/test_bytes_api.py | 4 ++-- keiko/keiko/keiko.py | 2 +- mula/scheduler/rankers/boefje.py | 2 +- mula/tests/scripts/benchmark.py | 2 ++ mula/tests/scripts/load.py | 8 +++++++- octopoes/.ci/health_check.py | 7 ------- octopoes/octopoes/connector/katalogus.py | 2 +- pyproject.toml | 18 +++++++++++++++--- rocky/tools/add_ooi_information.py | 9 +++++---- 35 files changed, 88 insertions(+), 48 deletions(-) delete mode 100644 octopoes/.ci/health_check.py diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index e7b7c2c8b17..b369c109006 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -90,7 +90,8 @@ def get_environment_settings(boefje_meta: BoefjeMeta, environment_keys: List[str try: katalogus_api = str(settings.katalogus_api).rstrip("/") response = requests.get( - f"{katalogus_api}/v1/organisations/{boefje_meta.organization}/{boefje_meta.boefje.id}/settings" + f"{katalogus_api}/v1/organisations/{boefje_meta.organization}/{boefje_meta.boefje.id}/settings", + timeout=30, ) response.raise_for_status() environment = response.json() diff --git a/boefjes/boefjes/katalogus/tests/integration/test_api.py b/boefjes/boefjes/katalogus/tests/integration/test_api.py index cebb48a0263..c060014ca3c 100644 --- a/boefjes/boefjes/katalogus/tests/integration/test_api.py +++ b/boefjes/boefjes/katalogus/tests/integration/test_api.py @@ -58,7 +58,7 @@ def tearDown(self) -> None: session = sessionmaker(bind=get_engine())() for table in SQL_BASE.metadata.tables: - session.execute(f"DELETE FROM {table} CASCADE") + session.execute(f"DELETE FROM {table} CASCADE") # noqa: S608 session.commit() session.close() diff --git a/boefjes/boefjes/katalogus/tests/integration/test_migrations.py b/boefjes/boefjes/katalogus/tests/integration/test_migrations.py index 3597dcedac1..4f4e4ba5ed0 100644 --- a/boefjes/boefjes/katalogus/tests/integration/test_migrations.py +++ b/boefjes/boefjes/katalogus/tests/integration/test_migrations.py @@ -30,7 +30,7 @@ def test_setting_to_settings_json(self): encrypter = create_encrypter() entries = self._collect_entries(encrypter) - query = f"INSERT INTO setting (key, value, organisation_pk, plugin_id) values {','.join(map(str, entries))}" + query = f"INSERT INTO setting (key, value, organisation_pk, plugin_id) values {','.join(map(str, entries))}" # noqa: S608 self.engine.execute(text(query)) alembic.config.main(argv=["--config", "/app/boefjes/boefjes/alembic.ini", "upgrade", "head"]) diff --git a/boefjes/boefjes/katalogus/tests/integration/test_sql_repositories.py b/boefjes/boefjes/katalogus/tests/integration/test_sql_repositories.py index 0c11633ec59..e086df89731 100644 --- a/boefjes/boefjes/katalogus/tests/integration/test_sql_repositories.py +++ b/boefjes/boefjes/katalogus/tests/integration/test_sql_repositories.py @@ -47,7 +47,7 @@ def tearDown(self) -> None: session = sessionmaker(bind=get_engine())() for table in SQL_BASE.metadata.tables: - session.execute(f"DELETE FROM {table} CASCADE") + session.execute(f"DELETE FROM {table} CASCADE") # noqa: S608 session.commit() session.close() diff --git a/boefjes/boefjes/migrations/versions/cd34fdfafdaf_json_settings_for_settings_table.py b/boefjes/boefjes/migrations/versions/cd34fdfafdaf_json_settings_for_settings_table.py index b08a2c0ed3b..d52cb9a4140 100644 --- a/boefjes/boefjes/migrations/versions/cd34fdfafdaf_json_settings_for_settings_table.py +++ b/boefjes/boefjes/migrations/versions/cd34fdfafdaf_json_settings_for_settings_table.py @@ -62,8 +62,8 @@ def upgrade_encrypted_settings(conn: Connection): # Seed the encrypted original data into the new table for result in results: conn.execute( - f"INSERT INTO settings (values, plugin_id, organisation_pk) " - f"VALUES ('{result[0]}', '{result[1]}', {result[2]})" + "INSERT INTO settings (values, plugin_id, organisation_pk) VALUES (%s, %s, %s)", + [result[0], result[1], result[2]], ) @@ -104,8 +104,8 @@ def downgrade_encrypted_settings(conn: Connection): for result in results: conn.execute( - f"INSERT INTO setting (key, value, plugin_id, organisation_pk) " - f"VALUES ('{result[0]}', '{result[1]}', '{result[2]}', {result[3]})" + "INSERT INTO setting (key, value, plugin_id, organisation_pk) VALUES (%s, %s, %s, %s)", + [result[0], result[1], result[2], result[3]], ) diff --git a/boefjes/boefjes/plugins/kat_burpsuite/normalize.py b/boefjes/boefjes/plugins/kat_burpsuite/normalize.py index 6a3dac4671d..ca2312cd6d5 100644 --- a/boefjes/boefjes/plugins/kat_burpsuite/normalize.py +++ b/boefjes/boefjes/plugins/kat_burpsuite/normalize.py @@ -2,9 +2,9 @@ from ipaddress import IPv4Address, IPv6Address, ip_address from typing import Iterable, Union from urllib.parse import urlparse -from xml.dom import minidom from bs4 import BeautifulSoup +from defusedxml import minidom from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference diff --git a/boefjes/boefjes/plugins/kat_crt_sh/main.py b/boefjes/boefjes/plugins/kat_crt_sh/main.py index 2506efd34f4..fbd7e681be7 100644 --- a/boefjes/boefjes/plugins/kat_crt_sh/main.py +++ b/boefjes/boefjes/plugins/kat_crt_sh/main.py @@ -48,7 +48,7 @@ def request_certs(search_string, search_type="Identity", match="=", deduplicate= if deduplicate: query["deduplicate"] = "Y" - response = requests.get(CRT_SH_API, params=query) + response = requests.get(CRT_SH_API, params=query, timeout=30) if response.status_code != 200: response.raise_for_status() if json_output: diff --git a/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py b/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py index 719da309317..c878a68d899 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py @@ -51,7 +51,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[str, bytes]]]: ] try: ssh_command = " ".join(ssh_command) - coutput = os.system(ssh_command) + coutput = os.system(ssh_command) # noqa: S605 if coutput not in (0, 32512): # 0 = it worked, 32512 = `exit` does not exists but we did connect continue return [ @@ -63,6 +63,6 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[str, bytes]]]: ) ] - except Exception: + except Exception: # noqa: S112 continue return [(set(), "No known keys allowed")] diff --git a/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py b/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py index 2a2aa84d695..30cb8191e9a 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py @@ -15,7 +15,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[str, bytes]]]: website = f"{service}://{hostname}" full_url = urljoin(website, ENDPOINT_PATH) - response = requests.get(full_url, verify=False, allow_redirects=False) + response = requests.get(full_url, verify=False, allow_redirects=False, timeout=30) # noqa: S501 if response.status_code == 200: return [(set(), response.content)] diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/main.py b/boefjes/boefjes/plugins/kat_cve_finding_types/main.py index 3c4a0e570da..1dd2003c3e3 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/main.py @@ -9,6 +9,6 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: cve_id = boefje_meta.arguments["input"]["id"] cveapi_url = getenv("CVEAPI_URL", "https://cve.openkat.dev/v1") - response = requests.get(f"{cveapi_url}/{cve_id}.json") + response = requests.get(f"{cveapi_url}/{cve_id}.json", timeout=30) return [(set(), response.content)] diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py b/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py index b61bb8fb7fd..40db78c81f0 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py @@ -1,7 +1,8 @@ import json -import xml.etree.ElementTree as ET from typing import List, Tuple, Union +import defusedxml.ElementTree as ET + from boefjes.job_models import BoefjeMeta FINDING_TYPE_PATH = "boefjes/plugins/kat_cwe_finding_types/cwec_v4.11.xml" diff --git a/boefjes/boefjes/plugins/kat_green_hosting/main.py b/boefjes/boefjes/plugins/kat_green_hosting/main.py index 335d53bc077..da1af1b8a0f 100644 --- a/boefjes/boefjes/plugins/kat_green_hosting/main.py +++ b/boefjes/boefjes/plugins/kat_green_hosting/main.py @@ -11,6 +11,6 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: input_ = boefje_meta.arguments["input"] hostname = input_["hostname"]["name"] - response = requests.get(f"{API_URL}/greencheck/{hostname}") + response = requests.get(f"{API_URL}/greencheck/{hostname}", timeout=30) return [(set(), response.content)] diff --git a/boefjes/boefjes/plugins/kat_leakix/main.py b/boefjes/boefjes/plugins/kat_leakix/main.py index 9aa6c9fc3ba..6aa46d9bb21 100644 --- a/boefjes/boefjes/plugins/kat_leakix/main.py +++ b/boefjes/boefjes/plugins/kat_leakix/main.py @@ -29,6 +29,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: response = requests.get( f"https://leakix.net/search?scope={scope}&q={dork}&page={page_counter}", headers={"Accept": "application/json", "api-key": getenv("LEAKIX_API")}, + timeout=30, ) page_counter += 1 if not response or not response.content: diff --git a/boefjes/boefjes/plugins/kat_log4shell/main.py b/boefjes/boefjes/plugins/kat_log4shell/main.py index 65998291661..b8cf89472fa 100755 --- a/boefjes/boefjes/plugins/kat_log4shell/main.py +++ b/boefjes/boefjes/plugins/kat_log4shell/main.py @@ -45,7 +45,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: def check_with_header(url_input: str, header_name: str, payload: str, timeout: int) -> Optional[str]: try: - response = requests.get(url_input, headers={header_name: payload}, verify=False, timeout=timeout) + response = requests.get(url_input, headers={header_name: payload}, verify=False, timeout=timeout) # noqa: S501 return b64encode(response.content).decode() except requests.exceptions.ConnectionError as e: @@ -54,7 +54,7 @@ def check_with_header(url_input: str, header_name: str, payload: str, timeout: i def check(url_input: str, payload: str, timeout: int) -> Optional[str]: try: - response = requests.get(f"{url_input}{payload}", verify=False, timeout=timeout) + response = requests.get(f"{url_input}{payload}", verify=False, timeout=timeout) # noqa: S501 return b64encode(response.content).decode() except requests.exceptions.ConnectionError as e: diff --git a/boefjes/boefjes/plugins/kat_masscan/main.py b/boefjes/boefjes/plugins/kat_masscan/main.py index 6d2568e6c1d..1a4819ff0b1 100644 --- a/boefjes/boefjes/plugins/kat_masscan/main.py +++ b/boefjes/boefjes/plugins/kat_masscan/main.py @@ -9,7 +9,7 @@ from boefjes.job_models import BoefjeMeta IMAGE = "ghcr.io/minvws/nl-kat-masscan-build-image:latest" -FILE_PATH = "/tmp/output.json" +FILE_PATH = "/tmp/output.json" # noqa: S108 ############################################################################### diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py b/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py index 9035ce06d17..d5e1b08ecfb 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py @@ -6,6 +6,8 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: - response = requests.get("https://raw.githubusercontent.com/RetireJS/retire.js/v3/repository/jsrepository.json") + response = requests.get( + "https://raw.githubusercontent.com/RetireJS/retire.js/v3/repository/jsrepository.json", timeout=30 + ) return [(set(), response.content)] diff --git a/boefjes/boefjes/plugins/kat_rpki/main.py b/boefjes/boefjes/plugins/kat_rpki/main.py index cb78c114dbd..1594d77cad3 100644 --- a/boefjes/boefjes/plugins/kat_rpki/main.py +++ b/boefjes/boefjes/plugins/kat_rpki/main.py @@ -75,7 +75,7 @@ def cache_out_of_date() -> bool: def refresh_rpki(algo: str) -> Tuple[Dict, Dict]: source_url = getenv("RPKI_SOURCE_URL", RPKI_SOURCE_URL) - response = requests.get(source_url, allow_redirects=True) + response = requests.get(source_url, allow_redirects=True, timeout=30) response.raise_for_status() with tempfile.NamedTemporaryFile(mode="wb", dir=RPKI_PATH.parent, delete=False) as temp_rpki_file: temp_rpki_file.write(response.content) diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py index 07d12f9166b..1c355f56c65 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py @@ -41,7 +41,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: # we can not force the ip anymore elif response.status_code in [301, 302, 307, 308]: uri = response.headers["Location"] - response = requests.get(uri, stream=True) + response = requests.get(uri, stream=True, timeout=30) ip = response.raw._connection.sock.getpeername()[0] results[path] = { "content": response.content.decode(), diff --git a/boefjes/boefjes/plugins/kat_snyk/main.py b/boefjes/boefjes/plugins/kat_snyk/main.py index 74068a86a3d..4a36ba7bb5d 100755 --- a/boefjes/boefjes/plugins/kat_snyk/main.py +++ b/boefjes/boefjes/plugins/kat_snyk/main.py @@ -19,7 +19,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: "cve_vulnerabilities": [], } url_snyk = f"https://snyk.io/vuln/npm:{software_name.lower().replace(' ', '-')}" - page = requests.get(url_snyk) + page = requests.get(url_snyk, timeout=30) soup = BeautifulSoup(page.content, "html.parser") tables = soup.find_all("table") for table in tables: @@ -47,7 +47,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: if check_version.check_version_in(software_version, parsed_info["Vuln_versions"]): # Check if there is a CVE code available for this vulnerability url_snyk = f"https://snyk.io/vuln/{parsed_info['Vuln_href']}" - vuln_page = requests.get(url_snyk) + vuln_page = requests.get(url_snyk, timeout=30) vuln_soup = BeautifulSoup(vuln_page.content, "html.parser") cve_element = vuln_soup.select("[class='cve']") cve_code = cve_element[0].text.split("\n")[0] if cve_element else "" diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py b/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py index da7bd01bac4..a353b563303 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py @@ -11,7 +11,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: snyk_id = boefje_meta.arguments["input"]["id"] url_snyk = f"https://snyk.io/vuln/{snyk_id}" - page = requests.get(url_snyk) + page = requests.get(url_snyk, timeout=30) soup = BeautifulSoup(page.content, "html.parser") result = { "risk": soup.select("[data-snyk-test-score]")[0].attrs["data-snyk-test-score"], diff --git a/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py b/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py index 66fdc9a9246..b8031f759b4 100644 --- a/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py @@ -1,6 +1,7 @@ -import xml.etree.ElementTree as ET from typing import Iterable, Union +import defusedxml.ElementTree as ET + from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType diff --git a/boefjes/boefjes/plugins/kat_webpage_capture/main.py b/boefjes/boefjes/plugins/kat_webpage_capture/main.py index 86ea900c1f0..242a0e99571 100644 --- a/boefjes/boefjes/plugins/kat_webpage_capture/main.py +++ b/boefjes/boefjes/plugins/kat_webpage_capture/main.py @@ -93,8 +93,9 @@ def build_playwright_command(webpage: str, browser: str, tmp_path: str) -> str: ] -def run_playwright(webpage: str, browser: str, tmp_path: str = "/tmp/tmp") -> Tuple[bytes]: +def run_playwright(webpage: str, browser: str) -> Tuple[bytes]: """Run Playwright in Docker.""" + tmp_path = "/tmp/output" # noqa: S108 client = docker.from_env() client.images.pull(PLAYWRIGHT_IMAGE) # https://playwright.dev/docs/docker#crawling-and-scraping diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 8e7568767b4..6141471d4ff 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -580,6 +580,17 @@ files = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "deprecated" version = "1.2.14" @@ -2878,4 +2889,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "e4214a32dc05b6e34cb942465d756e669f894f2f00ccb4309542ae4313f36f29" +content-hash = "52b714285f4940240cd3112097e7c4057e15674ec374bb8ccbbcc8c0595b54c8" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index 6bb76551715..b0cb1ef4bfb 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -59,6 +59,8 @@ wpscan-out-parse = "1.9.3" sectxt = "0.9.0" # required by kat_rpki netaddr = "0.9.0" +# required by kat_burpsuite, kat_cwe_finding_types and kat_ssl_scan +defusedxml = "^0.7.1" pydantic-settings = "^2.0.3" opentelemetry-instrumentation = "^0.41b0" diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 3b0eb864861..3985879fe1d 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -306,6 +306,9 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 +defusedxml==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ + --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index f8c6a9dce5e..ef56e56b955 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -306,6 +306,9 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 +defusedxml==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ + --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 diff --git a/bytes/tests/integration/test_bytes_api.py b/bytes/tests/integration/test_bytes_api.py index c29f2d41b81..f0f286286d3 100644 --- a/bytes/tests/integration/test_bytes_api.py +++ b/bytes/tests/integration/test_bytes_api.py @@ -262,12 +262,12 @@ def test_save_raw_no_mime_types(bytes_api_client: BytesAPIClient) -> None: raw_url = f"{bytes_api_client._session._base_url}/bytes/raw" raw = b"second test 123456" - response = requests.post(raw_url, data=raw, headers=headers, params={"boefje_meta_id": boefje_meta.id}) + response = requests.post(raw_url, data=raw, headers=headers, params={"boefje_meta_id": boefje_meta.id}, timeout=30) assert response.status_code == 200 get_raw_without_mime_type_response = requests.get( - f"{raw_url}/{response.json().get('id')}", headers=bytes_api_client.headers, stream=True + f"{raw_url}/{response.json().get('id')}", headers=bytes_api_client.headers, stream=True, timeout=30 ) assert get_raw_without_mime_type_response.status_code == 200 diff --git a/keiko/keiko/keiko.py b/keiko/keiko/keiko.py index 6665ad7b443..97f7f0669c3 100644 --- a/keiko/keiko/keiko.py +++ b/keiko/keiko/keiko.py @@ -106,7 +106,7 @@ def generate_report( logger.info("Glossary loaded. [report_id=%s] [glossary=%s]", report_id, glossary) # init jinja2 template - env = Environment( + env = Environment( # noqa: S701 loader=FileSystemLoader(settings.templates_folder), variable_start_string="@@{", variable_end_string="}@@", diff --git a/mula/scheduler/rankers/boefje.py b/mula/scheduler/rankers/boefje.py index c102073048e..942ef55a93a 100644 --- a/mula/scheduler/rankers/boefje.py +++ b/mula/scheduler/rankers/boefje.py @@ -55,4 +55,4 @@ class BoefjeRankerTimeBased(Ranker): def rank(self, obj: Any) -> int: minimum = datetime.today() + timedelta(days=1) maximum = minimum + timedelta(days=7) - return random.randint(int(minimum.timestamp()), int(maximum.timestamp())) + return random.randint(int(minimum.timestamp()), int(maximum.timestamp())) # noqa: S311 diff --git a/mula/tests/scripts/benchmark.py b/mula/tests/scripts/benchmark.py index 15dcc8e0a4d..0481c40724c 100644 --- a/mula/tests/scripts/benchmark.py +++ b/mula/tests/scripts/benchmark.py @@ -16,6 +16,7 @@ def are_tasks_done() -> bool: response = requests.get( url=f"{SCHEDULER_API}/tasks/stats", + timeout=30, ) try: @@ -32,6 +33,7 @@ def are_tasks_done() -> bool: def parse_stats() -> None: resp_tasks_stats = requests.get( url=f"{SCHEDULER_API}/tasks/stats", + timeout=30, ) try: diff --git a/mula/tests/scripts/load.py b/mula/tests/scripts/load.py index bcb1e66a7b1..290cd18cc36 100644 --- a/mula/tests/scripts/load.py +++ b/mula/tests/scripts/load.py @@ -25,6 +25,7 @@ def run(org_num: int = 1): resp_katalogus = requests.post( url=f"{KATALOGUS_API}/v1/organisations/", json=org, + timeout=30, ) try: @@ -40,6 +41,7 @@ def run(org_num: int = 1): try: requests.post( url=f"{OCTOPOES_API}/{org.get('id')}/node/", + timeout=30, ) except requests.exceptions.HTTPError: print("Error creating organisation ", org) @@ -53,6 +55,7 @@ def run(org_num: int = 1): resp_enable_boefje = requests.patch( url=f"{KATALOGUS_API}/v1/organisations/{org.get('id')}/repositories/LOCAL/plugins/{boefje_id}", json={"enabled": True}, + timeout=30, ) try: @@ -95,7 +98,9 @@ def run(org_num: int = 1): for org in orgs: for declaration in declarations: - resp_octopoes_decl = requests.post(f"{OCTOPOES_API}/{org.get('id')}/declarations", json=declaration) + resp_octopoes_decl = requests.post( + f"{OCTOPOES_API}/{org.get('id')}/declarations", json=declaration, timeout=30 + ) try: resp_octopoes_decl.raise_for_status() @@ -114,6 +119,7 @@ def run(org_num: int = 1): "reference": declaration.get("ooi").get("scan_profile").get("reference"), "level": declaration.get("ooi").get("scan_profile").get("level"), }, + timeout=30, ) try: diff --git a/octopoes/.ci/health_check.py b/octopoes/.ci/health_check.py deleted file mode 100644 index afe63f72e00..00000000000 --- a/octopoes/.ci/health_check.py +++ /dev/null @@ -1,7 +0,0 @@ -import sys -import urllib.request - -url = sys.argv[1] -with urllib.request.urlopen(url) as response: - if response.status != 200: - exit(1) diff --git a/octopoes/octopoes/connector/katalogus.py b/octopoes/octopoes/connector/katalogus.py index 6f1498c2ec0..0e3184e7674 100644 --- a/octopoes/octopoes/connector/katalogus.py +++ b/octopoes/octopoes/connector/katalogus.py @@ -8,7 +8,7 @@ def __init__(self, base_uri: str): self.base_uri = f"{base_uri.rstrip('/')}/v1" def get_organisations(self) -> List[str]: - response = requests.get(f"{self.base_uri}/organisations") + response = requests.get(f"{self.base_uri}/organisations", timeout=30) response.raise_for_status() return response.json().keys() diff --git a/pyproject.toml b/pyproject.toml index 8c7ef5ffeae..d22be70338e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,9 +22,21 @@ paths = ["."] [tool.ruff] # Enable classic flake8, pyflakes, eradicate, and tidyimport # To be extended with DJ, PT, RUF, C90, D, PL, RET -select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH", "SIM", "PLC", "A"] -# non-pep585-annotation and non-pep604-annotation are not actually compatible with 3.8 -ignore = ["UP006", "UP007", "A003", "SIM108"] +select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH", "SIM", "PLC", "A", "S"] +ignore = [ + "UP006", # Is not compatible with Python 3.8 + "UP007", # Is not compatible with Python 3.8 + "A003", # Built-in shadowing is usually not a problem and some built-ins have very generic names + "SIM108", # Ternary operator is not always more readable + "S101", # Assert use is normal in pytest tests + "S104", # Binding to all is normal in containers + "S105", # Disabled because of false positives + "S106", # Disabled because of false positives + "S308", # Mark_safe usage is okay + "S324", # Insecure hash functions can still be useful + "S603", # Disabled because of false positives + "S607", # Disabled because of false positives +] fix = true # Exclude a variety of commonly ignored directories. diff --git a/rocky/tools/add_ooi_information.py b/rocky/tools/add_ooi_information.py index 67587838eb1..999ee8b6c3a 100644 --- a/rocky/tools/add_ooi_information.py +++ b/rocky/tools/add_ooi_information.py @@ -32,7 +32,8 @@ def iana_service_table(search_query: str) -> List[_Service]: response = requests.get( "https://www.iana.org/assignments/service-names-port-numbers/" - "service-names-port-numbers.xhtml?search=" + search_query + "service-names-port-numbers.xhtml?search=" + search_query, + timeout=30, ) soup = BeautifulSoup(response.text, "html.parser") @@ -54,7 +55,7 @@ def iana_service_table(search_query: str) -> List[_Service]: description, ) services.append(service) - except Exception: + except Exception: # noqa: S110 # just ignore on parse errors pass return services @@ -145,7 +146,7 @@ def _map_usage_value(value: str) -> bool: def wiki_port_tables() -> List[_PortInfo]: - response = requests.get("https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers") + response = requests.get("https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers", timeout=30) soup = BeautifulSoup(response.text, "html.parser") rows = [] @@ -165,7 +166,7 @@ def wiki_port_tables() -> List[_PortInfo]: if _map_usage_value(tcp): protocols.append("udp") description = description.strip() - except Exception: + except Exception: # noqa: S112 continue items.append(_PortInfo(port, protocols, description)) From da130aea8c737c42bab401826dfaa7991ad573d9 Mon Sep 17 00:00:00 2001 From: originalsouth Date: Mon, 12 Feb 2024 12:08:40 +0100 Subject: [PATCH 29/85] Fix kat_dns settings (#2459) Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> --- boefjes/boefjes/plugins/kat_dns/boefje.json | 4 ++++ boefjes/boefjes/plugins/kat_dns/main.py | 17 +++++++++++------ boefjes/tests/test_api.py | 1 + 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_dns/boefje.json b/boefjes/boefjes/plugins/kat_dns/boefje.json index 1479a0212ca..4976c10bd15 100644 --- a/boefjes/boefjes/plugins/kat_dns/boefje.json +++ b/boefjes/boefjes/plugins/kat_dns/boefje.json @@ -5,5 +5,9 @@ "consumes": [ "Hostname" ], + "environment_keys": [ + "RECORD_TYPES", + "REMOTE_NS" + ], "scan_level": 1 } diff --git a/boefjes/boefjes/plugins/kat_dns/main.py b/boefjes/boefjes/plugins/kat_dns/main.py index 1efe65d3580..d6de2205bbb 100644 --- a/boefjes/boefjes/plugins/kat_dns/main.py +++ b/boefjes/boefjes/plugins/kat_dns/main.py @@ -13,7 +13,7 @@ from boefjes.job_models import BoefjeMeta logger = logging.getLogger(__name__) -DEFAULT_RECORD_TYPES = set(("A", "AAAA", "CAA", "CERT", "RP", "SRV", "TXT", "MX", "NS", "CNAME", "DNAME")) +DEFAULT_RECORD_TYPES = set(("A", "AAAA", "CAA", "CERT", "RP", "SRV", "TXT", "MX", "NS", "CNAME", "DNAME", "SOA")) class ZoneNotFoundException(Exception): @@ -24,7 +24,7 @@ def get_record_types() -> List[str]: requested_record_types = getenv("RECORD_TYPES", "") if not requested_record_types: return DEFAULT_RECORD_TYPES - requested_record_types = re.sub("[^A-Za-z,]", requested_record_types.upper(), "").split(",") + requested_record_types = list(map(lambda x: re.sub(r"[^A-Za-z]", "", x), requested_record_types.upper().split(","))) return list(set(requested_record_types).intersection(DEFAULT_RECORD_TYPES)) @@ -36,11 +36,16 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: nameserver = getenv("REMOTE_NS", str(settings.remote_ns)) resolver.nameservers = [nameserver] - answers = [ - get_parent_zone_soa(resolver, requested_dns_name), - ] + record_types = get_record_types() + answers = ( + [ + get_parent_zone_soa(resolver, requested_dns_name), + ] + if "SOA" in record_types + else [] + ) - for type_ in get_record_types(): + for type_ in record_types: try: answer: Answer = resolver.resolve(hostname, type_) answers.append(answer) diff --git a/boefjes/tests/test_api.py b/boefjes/tests/test_api.py index a1d2aa8bfb4..4dc007f8ba2 100644 --- a/boefjes/tests/test_api.py +++ b/boefjes/tests/test_api.py @@ -27,6 +27,7 @@ def test_boefje_input_running(api, tmp_path): scheduler_client.patch_task(task.id, TaskStatus.RUNNING) api.app.dependency_overrides[boefjes.api.get_scheduler_client] = lambda: scheduler_client + boefjes.api.get_environment_settings = lambda *_: {} response = api.get("/api/v0/tasks/70da7d4f-f41f-4940-901b-d98a92e9014b") assert response.status_code == 200 assert response.json() == { From e3a303ff929d216b31bd0914e9ba60eeb379e10e Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 13:15:26 +0100 Subject: [PATCH 30/85] Ignore certificate errors in security txt boefje (#2487) --- boefjes/boefjes/plugins/kat_security_txt_downloader/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py index 1c355f56c65..ac8ed22afd7 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py @@ -41,7 +41,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: # we can not force the ip anymore elif response.status_code in [301, 302, 307, 308]: uri = response.headers["Location"] - response = requests.get(uri, stream=True, timeout=30) + response = requests.get(uri, stream=True, timeout=30, verify=False) # noqa: S501 ip = response.raw._connection.sock.getpeername()[0] results[path] = { "content": response.content.decode(), From 18e236ba1ad93b8847eab8410bd43e8a0e90137d Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 13:41:39 +0100 Subject: [PATCH 31/85] Add unit tests for vulnerability report and fix first_seen (#2462) Co-authored-by: Jan Klopper --- .../vulnerability_report/report.py | 7 +- rocky/tests/conftest.py | 124 +++++++++++++++++- rocky/tests/reports/__init__.py | 0 .../reports/test_vulnerability_report.py | 93 +++++++++++++ 4 files changed, 216 insertions(+), 8 deletions(-) create mode 100644 rocky/tests/reports/__init__.py create mode 100644 rocky/tests/reports/test_vulnerability_report.py diff --git a/rocky/reports/report_types/vulnerability_report/report.py b/rocky/reports/report_types/vulnerability_report/report.py index ce9fbf50d42..d0ac0664260 100644 --- a/rocky/reports/report_types/vulnerability_report/report.py +++ b/rocky/reports/report_types/vulnerability_report/report.py @@ -82,9 +82,6 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[ data = {} critical = RiskLevelSeverity.CRITICAL.value - first_seen = "-" - last_seen = "-" - findings = self.get_findings(input_ooi, valid_time) for ip, findings_data in findings.items(): @@ -110,6 +107,8 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[ if time_history: first_seen = time_history[0] + else: + first_seen = "-" origins = self.octopoes_api_connector.list_origins(result=finding.ooi, valid_time=valid_time) sources = ", ".join([origin.method for origin in origins]) @@ -119,7 +118,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[ filtered_findings[finding.primary_key] = { str(_("Source")): sources, str(_("First seen")): first_seen, - str(_("Last seen")): last_seen, + str(_("Last seen")): "-", str(_("Evidence")): evidence, } diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 3d087791ce3..fa90ba98db4 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -2,10 +2,13 @@ import io import json import logging +from datetime import datetime, timezone +from ipaddress import IPv4Address from os import urandom from pathlib import Path -from typing import Dict +from typing import Dict, List, Optional, Union from unittest.mock import MagicMock, patch +from uuid import UUID import pytest from django.conf import settings @@ -26,9 +29,12 @@ OrganizationMember, ) -from octopoes.models import DeclaredScanProfile, Reference, ScanLevel -from octopoes.models.ooi.findings import Finding, KATFindingType, RiskLevelSeverity -from octopoes.models.ooi.network import Network +from octopoes.models import OOI, DeclaredScanProfile, Reference, ScanLevel +from octopoes.models.ooi.dns.zone import Hostname +from octopoes.models.ooi.findings import CVEFindingType, Finding, KATFindingType, RiskLevelSeverity +from octopoes.models.ooi.network import IPAddressV4, Network +from octopoes.models.origin import Origin, OriginType +from octopoes.models.transaction import TransactionRecord from rocky.scheduler import Task LANG_LIST = [code for code, _ in settings.LANGUAGES] @@ -37,6 +43,11 @@ logging.getLogger("faker").setLevel(logging.INFO) +@pytest.fixture +def valid_time(): + return datetime.now(timezone.utc) + + @pytest.fixture(params=LANG_LIST) def current_language(request): return request.param @@ -428,6 +439,64 @@ def network(): ) +@pytest.fixture +def ipaddressv4(network): + return IPAddressV4(network=network.reference, address=IPv4Address("192.0.2.1")) + + +@pytest.fixture +def hostname(network): + return Hostname(name="example.com", network=network.reference) + + +@pytest.fixture +def cve_finding_type_2019_8331(): + return CVEFindingType( + id="CVE-2019-8331", + description="In Bootstrap before 3.4.1 and 4.3.x before 4.3.1, XSS is possible in the tooltip or " + "popover data-template attribute.", + source="https://cve.circl.lu/cve/CVE-2019-8331", + risk_score=6.1, + risk_severity=RiskLevelSeverity.MEDIUM, + ) + + +@pytest.fixture +def cve_finding_2019_8331(): + return Finding( + finding_type=Reference.from_str("CVEFindingType|CVE-2019-8331"), + ooi=Reference.from_str( + "Finding|SoftwareInstance|HostnameHTTPURL|https|internet|mispo.es|443|/|Software|Bootstrap|3.3.7|cpe:/a:getbootstrap:bootstrap|CVE-2019-8331" + ), + proof=None, + description="Vulnerability CVE-2019-8331 detected", + reproduce=None, + ) + + +@pytest.fixture +def cve_finding_type_no_score(): + return CVEFindingType( + id="CVE-0000-0001", + description="CVE Finding without scopre", + source="https://cve.circl.lu/cve/CVE-0000-0001", + risk_severity=RiskLevelSeverity.UNKNOWN, + ) + + +@pytest.fixture +def cve_finding_no_score(): + return Finding( + finding_type=Reference.from_str("CVEFindingType|CVE-0000-0001"), + ooi=Reference.from_str( + "Finding|SoftwareInstance|HostnameHTTPURL|https|internet|mispo.es|443|/|Software|Bootstrap|3.3.7|cpe:/a:getbootstrap:bootstrap|CVE-0000-0001" + ), + proof=None, + description="Vulnerability CVE-0000-0001 detected", + reproduce=None, + ) + + @pytest.fixture def finding(): return Finding( @@ -609,3 +678,50 @@ def mock_scheduler_client_task_list(mocker): mock_scheduler_client_session.get.return_value = response return mock_scheduler_client_session + + +class MockOctopoesAPIConnector: + oois: Dict[Reference, OOI] + queries: Dict[str, Dict[Optional[Union[Reference, str]], List[OOI]]] + valid_time: datetime + + def __init__(self, valid_time: datetime): + self.valid_time = valid_time + + def get(self, reference: Reference, valid_time: Optional[datetime] = None) -> OOI: + return self.oois[reference] + + def query( + self, + path: str, + valid_time: datetime, + source: Optional[Union[Reference, str]] = None, + offset: int = 0, + limit: int = 50, + ) -> List[OOI]: + return self.queries[path][source] + + def get_history(self, reference: Reference) -> List[TransactionRecord]: + return [ + TransactionRecord( + txTime=self.valid_time, + txId=287, + validTime=self.valid_time, + contentHash="636a28da4792b9f5007143bb35bd37d48662df9b", + ) + ] + + def list_origins( + self, + valid_time: Optional[datetime] = None, + source: Optional[Reference] = None, + result: Optional[Reference] = None, + task_id: Optional[UUID] = None, + origin_type: Optional[OriginType] = None, + ) -> List[Origin]: + return [] + + +@pytest.fixture +def mock_octopoes_api_connector(valid_time): + return MockOctopoesAPIConnector(valid_time) diff --git a/rocky/tests/reports/__init__.py b/rocky/tests/reports/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/rocky/tests/reports/test_vulnerability_report.py b/rocky/tests/reports/test_vulnerability_report.py new file mode 100644 index 00000000000..06005062d70 --- /dev/null +++ b/rocky/tests/reports/test_vulnerability_report.py @@ -0,0 +1,93 @@ +from reports.report_types.vulnerability_report.report import VulnerabilityReport + + +def test_vulnerability_report_no_findings(mock_octopoes_api_connector, valid_time, ipaddressv4): + mock_octopoes_api_connector.oois = { + ipaddressv4.reference: ipaddressv4, + } + mock_octopoes_api_connector.queries = { + "IPAddress.... Date: Mon, 12 Feb 2024 14:22:12 +0100 Subject: [PATCH 32/85] minimal / maximal number of required checboxes checked functionality (#2375) Co-authored-by: ammar92 Co-authored-by: Jeroen Dekkers Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> --- rocky/assets/js/checkboxToggler.js | 81 +++++++++++++++++-- .../templates/partials/report_ooi_list.html | 4 +- .../partials/report_types_selection.html | 4 +- rocky/rocky/templates/oois/ooi_list.html | 2 +- 4 files changed, 83 insertions(+), 8 deletions(-) diff --git a/rocky/assets/js/checkboxToggler.js b/rocky/assets/js/checkboxToggler.js index ffa609d701d..af111f69416 100644 --- a/rocky/assets/js/checkboxToggler.js +++ b/rocky/assets/js/checkboxToggler.js @@ -1,17 +1,88 @@ -const toggle_all_btn = document.querySelectorAll(".toggle-all"); +const toggle_all_btn = document.querySelectorAll('.toggle-all'); for (var i = 0; i < toggle_all_btn.length; i++) { - toggle_all_btn[i].addEventListener("click", function (event) { + toggle_all_btn[i].addEventListener('click', function (event) { var toggle_target = event.target.dataset.toggleTarget; toggleCheckboxes(toggle_target, !this.classList.contains('toggle-on')); this.classList.toggle('toggle-on'); - }) + }); }; function toggleCheckboxes(name, value) { var checkboxes = document.getElementsByName(name); for (var i = 0; i < checkboxes.length; i++) { - if (checkboxes[i].type == 'checkbox') { + if (checkboxes[i].tagName == 'INPUT' && checkboxes[i].type == 'checkbox') { checkboxes[i].checked = value; } - }; + } +} + +const checkbox_required_anchors = document.querySelectorAll('.checkboxes_required'); +for (var i = 0; i < checkbox_required_anchors.length; i++){ + let anchor = checkbox_required_anchors[i]; + var form = false; + var collection = []; + if (anchor.tagName == 'INPUT' && anchor.type == 'checkbox'){ + // we are looking at a checkbox itself, assume we want all checkboxes with the same name in the same form + if(anchor.name){ + form = anchor.form; + collection = form.getElementsByName(anchor.name); + } + } else if (anchor.tagName == 'FORM'){ + form = anchor; + collection = anchor.querySelectorAll('input[type=checkbox]'); + } else { + // we are looking at a parent of a group of checkboxes. lets collect all underlying checkboxes. + collection = anchor.querySelectorAll('input[type=checkbox]'); + form = collection[0].form; + } + if (form){ + form.addEventListener('submit', checkbox_required_validity.bind(null, form, anchor)); + } +} + +function checkbox_required_validity(form, anchor, event) { + // validate the current list of checkboxes against the current min/max required settings only at submit time. + var selected_count = 0; + var elements = []; + if (anchor.tagName == 'INPUT' && anchor.type == 'checkbox'){ + // we are looking at a checkbox itself, assume we want all checkboxes with the same name in the same form + selected_count = anchor.form.querySelectorAll('input[type=checkbox][name='+anchor.name+']:checked').length; + elements = anchor.form.querySelectorAll('input[type=checkbox][name='+anchor.name+']'); + } else if (anchor.tagName == 'FORM'){ + selected_count = anchor.querySelectorAll('input[type=checkbox]:checked').length; + elements = anchor.querySelectorAll('input[type=checkbox]'); + } else { + // we are looking at a parent of a group of checkboxes. lets collect all underlying checkboxes. + selected_count = anchor.querySelectorAll('input[type=checkbox]:checked').length; + elements = anchor.form.querySelectorAll('input[type=checkbox]'); + } + + var error_element = elements[0]; + var minselected = 1; // we expect at least one, unless otherwise specified. + var validity = true; + error_element.setCustomValidity(''); + if ((("min" in anchor.dataset) && anchor.dataset.min > selected_count) || minselected > selected_count) { + minselected = (("min" in anchor.dataset) && anchor.dataset.min || minselected) + error_element.setCustomValidity('Not enough checkboxes selected, select at least: '+minselected); + validity = false; + event.preventDefault(); + } else if (("max" in anchor.dataset) && anchor.dataset.max < selected_count) { + error_element.setCustomValidity('Too many checkboxes selected. select at most: '+anchor.dataset.max); + validity = false; + event.preventDefault(); + } + + // bind a change event to *all* checkboxes that might increase or decrease our selected_count; + // Increase resets the usecase of a minimal selection, decrease is needed if we have reached the max. + elements.forEach(function (element){ + element.addEventListener('change', reset_validity.bind(null, error_element)); + }); + + error_element.reportValidity(); + return validity; +} + +function reset_validity(error_element, event){ + // we need to remove the custom error on change, because otherwise the submit won't allow us to revalidate as the form immediately raises an invalid state. + error_element.setCustomValidity(''); } diff --git a/rocky/reports/templates/partials/report_ooi_list.html b/rocky/reports/templates/partials/report_ooi_list.html index abcc6d61022..85cb61d69eb 100644 --- a/rocky/reports/templates/partials/report_ooi_list.html +++ b/rocky/reports/templates/partials/report_ooi_list.html @@ -31,7 +31,9 @@

    href="{% url 'ooi_add_type_select' organization_code=organization.code %}">{% translate "Create object" %}

    {% else %} - + {% include "forms/report_form_fields.html" %} {% if channel != "generate_report" %} diff --git a/rocky/reports/templates/partials/report_types_selection.html b/rocky/reports/templates/partials/report_types_selection.html index 14b48490571..33e6f110145 100644 --- a/rocky/reports/templates/partials/report_types_selection.html +++ b/rocky/reports/templates/partials/report_types_selection.html @@ -41,7 +41,9 @@

    {% translate "Available report types" %} ({{ available_report_types|length } {% endif %}

    {% translate "All report types that are available for your selection." %}

    {% translate "Toggle all report types" %} - + {% include "forms/report_form_fields.html" %}
    diff --git a/rocky/rocky/templates/oois/ooi_list.html b/rocky/rocky/templates/oois/ooi_list.html index df7b1875dad..ac30802eb0b 100644 --- a/rocky/rocky/templates/oois/ooi_list.html +++ b/rocky/rocky/templates/oois/ooi_list.html @@ -37,7 +37,7 @@

    {% blocktranslate with length=ooi_list|length total=total_oois %}Showing {{ length }} of {{ total }} objects{% endblocktranslate %}

    {% csrf_token %}
    From d83e0aca27be2a0adf634700cf61fb605f03840f Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 14:52:32 +0100 Subject: [PATCH 33/85] Remove support for Python 3.8 and 3.9 (#2470) Co-authored-by: Jan Klopper --- .github/workflows/boefjes_tests.yml | 2 +- .github/workflows/bytes_tests.yml | 2 +- .github/workflows/keiko_itest.yml | 4 +- .github/workflows/keiko_test.yml | 2 +- .github/workflows/mula_tests.yml | 2 +- .github/workflows/octopoes_rtest.yml | 2 +- .github/workflows/octopoes_tests.yml | 2 +- .github/workflows/rocky_tests.yml | 2 +- .../test_debian_packages_on_ubuntu.yml | 4 +- boefjes/boefjes/sql/db.py | 4 +- boefjes/poetry.lock | 59 +-- boefjes/pyproject.toml | 4 +- boefjes/requirements-dev.txt | 238 ++++++------ boefjes/requirements.txt | 228 ++++++----- bytes/poetry.lock | 13 +- bytes/pyproject.toml | 4 +- bytes/requirements-dev.txt | 172 ++++----- bytes/requirements.txt | 140 +++---- cveapi/pyproject.toml | 2 +- keiko/poetry.lock | 9 +- keiko/pyproject.toml | 4 +- keiko/requirements-dev.txt | 130 +++---- keiko/requirements.txt | 90 ++--- mula/poetry.lock | 29 +- mula/pyproject.toml | 4 +- mula/requirements-dev.txt | 141 ++++--- mula/requirements.txt | 113 +++--- octopoes/poetry.lock | 75 +--- octopoes/pyproject.toml | 4 +- octopoes/requirements-dev.txt | 244 +++++------- octopoes/requirements.txt | 182 ++++----- poetry.lock | 57 +-- pyproject.toml | 12 +- requirements.txt | 91 ++--- rocky/poetry.lock | 74 +--- rocky/pyproject.toml | 4 +- rocky/requirements-dev.txt | 361 ++++++++---------- rocky/requirements.txt | 251 ++++++------ 38 files changed, 1169 insertions(+), 1592 deletions(-) diff --git a/.github/workflows/boefjes_tests.yml b/.github/workflows/boefjes_tests.yml index a8dcaaebc39..cefd0afb47a 100644 --- a/.github/workflows/boefjes_tests.yml +++ b/.github/workflows/boefjes_tests.yml @@ -21,7 +21,7 @@ jobs: strategy: fail-fast: false matrix: - version: [ '3.8', '3.9', '3.10', '3.11' ] + version: [ '3.10', '3.11' ] runs-on: ubuntu-20.04 env: diff --git a/.github/workflows/bytes_tests.yml b/.github/workflows/bytes_tests.yml index 9e96f07110a..d976760d807 100644 --- a/.github/workflows/bytes_tests.yml +++ b/.github/workflows/bytes_tests.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - version: [ '3.8', '3.9', '3.10', '3.11' ] + version: [ '3.10', '3.11' ] runs-on: ubuntu-20.04 diff --git a/.github/workflows/keiko_itest.yml b/.github/workflows/keiko_itest.yml index 3ab2c372cdb..f646ade8bc4 100644 --- a/.github/workflows/keiko_itest.yml +++ b/.github/workflows/keiko_itest.yml @@ -20,10 +20,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Python 3.8 + - name: Set up Python 3.10 uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: '3.10' - name: Install requirements-dev.txt run: pip install -r requirements-dev.txt diff --git a/.github/workflows/keiko_test.yml b/.github/workflows/keiko_test.yml index 4707eba75e2..3b0580b158b 100644 --- a/.github/workflows/keiko_test.yml +++ b/.github/workflows/keiko_test.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - version: [ '3.8', '3.9', '3.10', '3.11' ] + version: [ '3.10', '3.11' ] runs-on: ubuntu-22.04 diff --git a/.github/workflows/mula_tests.yml b/.github/workflows/mula_tests.yml index 1a11022d254..1fea107efc8 100644 --- a/.github/workflows/mula_tests.yml +++ b/.github/workflows/mula_tests.yml @@ -19,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.10', '3.11'] runs-on: ubuntu-20.04 env: diff --git a/.github/workflows/octopoes_rtest.yml b/.github/workflows/octopoes_rtest.yml index 13b76954287..0322b5c9cfb 100644 --- a/.github/workflows/octopoes_rtest.yml +++ b/.github/workflows/octopoes_rtest.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.10' cache: 'pip' # caching pip dependencies - name: Install requirements-dev.txt diff --git a/.github/workflows/octopoes_tests.yml b/.github/workflows/octopoes_tests.yml index 8c69b266428..e1a65099385 100644 --- a/.github/workflows/octopoes_tests.yml +++ b/.github/workflows/octopoes_tests.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.10', '3.11'] runs-on: ubuntu-22.04 diff --git a/.github/workflows/rocky_tests.yml b/.github/workflows/rocky_tests.yml index 0c7bc9969cf..bcd77e12594 100644 --- a/.github/workflows/rocky_tests.yml +++ b/.github/workflows/rocky_tests.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - version: ['3.8', '3.9', '3.10', '3.11'] + version: ['3.10', '3.11'] runs-on: ubuntu-22.04 diff --git a/.github/workflows/test_debian_packages_on_ubuntu.yml b/.github/workflows/test_debian_packages_on_ubuntu.yml index 319094526dc..e831d22b90d 100644 --- a/.github/workflows/test_debian_packages_on_ubuntu.yml +++ b/.github/workflows/test_debian_packages_on_ubuntu.yml @@ -253,10 +253,10 @@ jobs: for i in {1..15}; do curl -s http://localhost:8001/_dev/health | jq .healthy | grep true -q && s=0 && break || s=$? && sleep 1 ; done if [ $s != 0 ]; then echo $(curl -v http://localhost:8001/_dev/health) || true && journalctl --no-pager -u kat-octopoes.service && exit $s ; fi - - name: Set up Python 3.8 + - name: Set up Python 3.10 uses: actions/setup-python@v5 with: - python-version: '3.8' + python-version: '3.10' cache: pip - name: Install Robot Framework diff --git a/boefjes/boefjes/sql/db.py b/boefjes/boefjes/sql/db.py index c5bf0cffdd0..b8f67f488eb 100644 --- a/boefjes/boefjes/sql/db.py +++ b/boefjes/boefjes/sql/db.py @@ -1,5 +1,5 @@ import logging -from functools import lru_cache +from functools import cache from typing import Any, Callable, Iterator, Type from sqlalchemy import create_engine @@ -13,7 +13,7 @@ SQL_BASE = declarative_base() -@lru_cache(maxsize=None) +@cache def get_engine() -> Engine: logger.info("Connecting to database..") diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 6141471d4ff..e68656b8751 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -136,8 +136,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" @@ -156,9 +154,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "ansicolors" version = "1.1.8" @@ -663,18 +658,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.2" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, - {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [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.36.3,<0.37.0" +starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] @@ -1047,24 +1042,6 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "6.1.1" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] - [[package]] name = "iniconfig" version = "2.0.0" @@ -1089,9 +1066,7 @@ files = [ [package.dependencies] attrs = ">=22.2.0" -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rpds-py = ">=0.7.1" @@ -1111,7 +1086,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.31.0" [[package]] @@ -1775,17 +1749,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa typing = ["typing-extensions"] xmp = ["defusedxml"] -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "pluggy" version = "1.4.0" @@ -2265,7 +2228,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -2542,21 +2504,20 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.36.3" +version = "0.35.1" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, - {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, + {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, + {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, ] [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] [[package]] name = "tldextract" @@ -2888,5 +2849,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "52b714285f4940240cd3112097e7c4057e15674ec374bb8ccbbcc8c0595b54c8" +python-versions = "^3.10" +content-hash = "bb0be171cd341ba82539392510ea1ccecd0222c920eb5880d1255ce9c1a1031d" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index b0cb1ef4bfb..e6243bcab0e 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -6,7 +6,7 @@ authors = ["MinVWS "] license = "EUPL" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" alembic = "^1.8.1" click = "^8.1.3" httpx = "^0.26.0" @@ -77,7 +77,7 @@ line-length = 120 transform-concats = true [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 [tool.pytest.ini_options] diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 3985879fe1d..0e44601d969 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -1,4 +1,4 @@ -aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ +aiohttp==3.9.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168 \ --hash=sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb \ --hash=sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5 \ @@ -75,46 +75,46 @@ aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d \ --hash=sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542 \ --hash=sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f -aioresponses==0.7.6 ; python_version >= "3.8" and python_version < "4.0" \ +aioresponses==0.7.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d2c26defbb9b440ea2685ec132e90700907fd10bcca3e85ec2f157219f0d26f7 \ --hash=sha256:f795d9dbda2d61774840e7e32f5366f45752d1adc1b74c9362afd017296c7ee1 -aiosignal==1.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +aiosignal==1.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -ansicolors==1.1.8 ; python_version >= "3.8" and python_version < "4.0" \ +ansicolors==1.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187 \ --hash=sha256:99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -async-timeout==4.0.3 ; python_version >= "3.8" and python_version < "3.11" \ +async-timeout==4.0.3 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f \ --hash=sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028 -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -beautifulsoup4==4.11.1 ; python_version >= "3.8" and python_version < "4.0" \ +beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30 \ --hash=sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693 -censys==2.1.8 ; python_version >= "3.8" and python_version < "4.0" \ +censys==2.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2ddd6d0ee6df70acf15792328df8bb4d0dd5a76b50883adac62989f1641820c1 \ --hash=sha256:665acf8777a871098832527ab8e0c5b1b9f9a548be928239747a6fcde8b613eb -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -167,7 +167,7 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -258,19 +258,19 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click-plugins==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +click-plugins==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -configparser==6.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -303,34 +303,34 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -defusedxml==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ +defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:95d12f6ef0317118d2a1a6fc49aac65ffec7eb8087474158f42f26a639135216 \ --hash=sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4 -docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +docker==6.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20 \ --hash=sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ - --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -forcediphttpsadapter==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +forcediphttpsadapter==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d224cf6e8e50eb788c9f5994a7afa6d389bac6dbe540b7dfd77a32590ad0153 \ --hash=sha256:5e7662ece61735585332d09b87d94fffe4752469d5c0d3feff48746e5d70744b -frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +frozenlist==1.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7 \ --hash=sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98 \ --hash=sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad \ @@ -408,10 +408,10 @@ frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887 \ --hash=sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced \ --hash=sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ +greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -470,7 +470,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -525,39 +525,36 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpretty==1.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -langcodes==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +langcodes==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4d89fc9acb6e9c8fdef70bcdf376113a3db09b67285d9e1d534de6d8818e7e69 \ --hash=sha256:794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6 -lxml==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +lxml==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01 \ --hash=sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f \ --hash=sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1 \ @@ -636,13 +633,13 @@ lxml==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4 \ --hash=sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204 \ --hash=sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -703,10 +700,10 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0" \ +multidict==6.0.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ @@ -781,54 +778,54 @@ multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba -netaddr==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +netaddr==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1 \ --hash=sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pgpy==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pgpy==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:279c2e353f4c3a319f00bd9bd582456e420f8a3ac6de2b4e9731444746828383 -pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ @@ -897,13 +894,10 @@ pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -915,7 +909,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -929,15 +923,15 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pyasn1==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58 \ --hash=sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c -pybinaryedge==0.5 ; python_version >= "3.8" and python_version < "4.0" \ +pybinaryedge==0.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00cf2f253aa44c7d6589a56d70c5b820a5060c3a0a2aee018f0b4ed732fe7632 -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -1017,19 +1011,19 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pydicom==2.4.4 ; python_version >= "3.8" and python_version < "4.0" \ +pydicom==2.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \ @@ -1040,27 +1034,27 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pynetdicom==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +pynetdicom==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:231212e9b9c5e0debf2af4f17d8afa14ecd1b262a11cdb891b2b2b15f7ab5939 \ --hash=sha256:6726173d25a51f66f2a4557d816c0f93b3b2a8435ce3d319e6cdd8e48bf657d5 -pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -python-libnmap==0.7.3 ; python_version >= "3.8" and python_version < "4.0" \ +python-libnmap==0.7.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d03629256c2ee9ab37390c28d4c4c2ae9637cd0861dd8ab9e0f32779545936c0 -python-wappalyzer==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-wappalyzer==0.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c76e4bbc1e782795f2ccda627add6366153cd53d8f8eb5a5b62431c7c4ecdfe \ --hash=sha256:28fc8d5b8ace221aad7c5729b923976af53c5b7116fd0ddc452a0dcaeaf4b831 -pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32" \ +pywin32==306 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ --hash=sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65 \ --hash=sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e \ @@ -1075,19 +1069,19 @@ pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platfo --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -1187,24 +1181,24 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -sectxt==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +sectxt==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c5b113cb37ec5053bf8ea335306a7c68079b53959df2324ffa9991885bec67a8 \ --hash=sha256:c81d874a55b96516d13e2b688f3150a6089e0636122237e4710717beafcb26d7 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -shodan==1.25.0 ; python_version >= "3.8" and python_version < "4.0" \ +shodan==1.25.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7e2bddbc1b60bf620042d0010f4b762a80b43111dbea9c041d72d4325e260c23 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ +soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 -sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ @@ -1251,33 +1245,33 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ - --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.35.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ + --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 -tomli==2.0.1 ; python_version >= "3.8" and python_version < "3.11" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -validators==0.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +validators==0.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a -websocket-client==1.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +websocket-client==1.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 -wpscan-out-parse==1.9.3 ; python_version >= "3.8" and python_version < "4.0" \ +wpscan-out-parse==1.9.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:fb89dd6e67efa28abece2e430810f4f79c1eb37ab8fcd6f16e6bd4a5b1b500ef \ --hash=sha256:fda37b8cf25baa6e6aee0ca069193f64066ccb1060de48e0b0ceda64a8d37b2d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -1348,10 +1342,10 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xlsxwriter==3.1.9 ; python_version >= "3.8" and python_version < "4.0" \ +xlsxwriter==3.1.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0 \ --hash=sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929 -yarl==1.9.4 ; python_version >= "3.8" and python_version < "4.0" \ +yarl==1.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51 \ --hash=sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce \ --hash=sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559 \ @@ -1442,6 +1436,6 @@ yarl==1.9.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958 \ --hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \ --hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index ef56e56b955..b9321395b48 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -1,4 +1,4 @@ -aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ +aiohttp==3.9.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168 \ --hash=sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb \ --hash=sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5 \ @@ -75,46 +75,46 @@ aiohttp==3.9.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d \ --hash=sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542 \ --hash=sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f -aioresponses==0.7.6 ; python_version >= "3.8" and python_version < "4.0" \ +aioresponses==0.7.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d2c26defbb9b440ea2685ec132e90700907fd10bcca3e85ec2f157219f0d26f7 \ --hash=sha256:f795d9dbda2d61774840e7e32f5366f45752d1adc1b74c9362afd017296c7ee1 -aiosignal==1.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +aiosignal==1.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc \ --hash=sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17 -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -ansicolors==1.1.8 ; python_version >= "3.8" and python_version < "4.0" \ +ansicolors==1.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187 \ --hash=sha256:99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -async-timeout==4.0.3 ; python_version >= "3.8" and python_version < "3.11" \ +async-timeout==4.0.3 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f \ --hash=sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028 -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -beautifulsoup4==4.11.1 ; python_version >= "3.8" and python_version < "4.0" \ +beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30 \ --hash=sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693 -censys==2.1.8 ; python_version >= "3.8" and python_version < "4.0" \ +censys==2.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2ddd6d0ee6df70acf15792328df8bb4d0dd5a76b50883adac62989f1641820c1 \ --hash=sha256:665acf8777a871098832527ab8e0c5b1b9f9a548be928239747a6fcde8b613eb -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -167,7 +167,7 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -258,19 +258,19 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click-plugins==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +click-plugins==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -configparser==6.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -303,34 +303,34 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -defusedxml==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ +defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:95d12f6ef0317118d2a1a6fc49aac65ffec7eb8087474158f42f26a639135216 \ --hash=sha256:e4a87f0b573201a0f3727fa18a516b055fd1107e0e5477cded4a2de497df1dd4 -docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +docker==6.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa6d17830045ba5ef0168d5eaa34d37beeb113948c413affe1d5991fc11f9a20 \ --hash=sha256:aecd2277b8bf8e506e484f6ab7aec39abe0038e29fa4a6d3ba86c3fe01844ed9 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ - --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -forcediphttpsadapter==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +forcediphttpsadapter==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d224cf6e8e50eb788c9f5994a7afa6d389bac6dbe540b7dfd77a32590ad0153 \ --hash=sha256:5e7662ece61735585332d09b87d94fffe4752469d5c0d3feff48746e5d70744b -frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +frozenlist==1.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7 \ --hash=sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98 \ --hash=sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad \ @@ -408,10 +408,10 @@ frozenlist==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887 \ --hash=sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced \ --hash=sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ +greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -470,7 +470,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -525,36 +525,33 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpretty==1.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -langcodes==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +langcodes==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4d89fc9acb6e9c8fdef70bcdf376113a3db09b67285d9e1d534de6d8818e7e69 \ --hash=sha256:794d07d5a28781231ac335a1561b8442f8648ca07cd518310aeb45d6f0807ef6 -lxml==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +lxml==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01 \ --hash=sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f \ --hash=sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1 \ @@ -633,13 +630,13 @@ lxml==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4 \ --hash=sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204 \ --hash=sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -700,10 +697,10 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0" \ +multidict==6.0.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ @@ -778,54 +775,54 @@ multidict==6.0.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba -netaddr==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +netaddr==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1 \ --hash=sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pgpy==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pgpy==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:279c2e353f4c3a319f00bd9bd582456e420f8a3ac6de2b4e9731444746828383 -pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ @@ -894,10 +891,7 @@ pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -909,7 +903,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -923,15 +917,15 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pyasn1==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58 \ --hash=sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c -pybinaryedge==0.5 ; python_version >= "3.8" and python_version < "4.0" \ +pybinaryedge==0.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00cf2f253aa44c7d6589a56d70c5b820a5060c3a0a2aee018f0b4ed732fe7632 -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -1011,19 +1005,19 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pydicom==2.4.4 ; python_version >= "3.8" and python_version < "4.0" \ +pydicom==2.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \ @@ -1034,21 +1028,21 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pynetdicom==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +pynetdicom==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:231212e9b9c5e0debf2af4f17d8afa14ecd1b262a11cdb891b2b2b15f7ab5939 \ --hash=sha256:6726173d25a51f66f2a4557d816c0f93b3b2a8435ce3d319e6cdd8e48bf657d5 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -python-libnmap==0.7.3 ; python_version >= "3.8" and python_version < "4.0" \ +python-libnmap==0.7.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d03629256c2ee9ab37390c28d4c4c2ae9637cd0861dd8ab9e0f32779545936c0 -python-wappalyzer==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-wappalyzer==0.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c76e4bbc1e782795f2ccda627add6366153cd53d8f8eb5a5b62431c7c4ecdfe \ --hash=sha256:28fc8d5b8ace221aad7c5729b923976af53c5b7116fd0ddc452a0dcaeaf4b831 -pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platform == "win32" \ +pywin32==306 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d \ --hash=sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65 \ --hash=sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e \ @@ -1063,19 +1057,19 @@ pywin32==306 ; python_version >= "3.8" and python_version < "4.0" and sys_platfo --hash=sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a \ --hash=sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407 \ --hash=sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0 -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -1175,24 +1169,24 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -sectxt==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +sectxt==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c5b113cb37ec5053bf8ea335306a7c68079b53959df2324ffa9991885bec67a8 \ --hash=sha256:c81d874a55b96516d13e2b688f3150a6089e0636122237e4710717beafcb26d7 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -shodan==1.25.0 ; python_version >= "3.8" and python_version < "4.0" \ +shodan==1.25.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7e2bddbc1b60bf620042d0010f4b762a80b43111dbea9c041d72d4325e260c23 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ +soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 -sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ @@ -1239,30 +1233,30 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ - --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.35.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ + --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -validators==0.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +validators==0.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:24148ce4e64100a2d5e267233e23e7afeb55316b47d30faae7eb6e7292bc226a -websocket-client==1.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +websocket-client==1.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6 \ --hash=sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588 -wpscan-out-parse==1.9.3 ; python_version >= "3.8" and python_version < "4.0" \ +wpscan-out-parse==1.9.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:fb89dd6e67efa28abece2e430810f4f79c1eb37ab8fcd6f16e6bd4a5b1b500ef \ --hash=sha256:fda37b8cf25baa6e6aee0ca069193f64066ccb1060de48e0b0ceda64a8d37b2d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -1333,10 +1327,10 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xlsxwriter==3.1.9 ; python_version >= "3.8" and python_version < "4.0" \ +xlsxwriter==3.1.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0 \ --hash=sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929 -yarl==1.9.4 ; python_version >= "3.8" and python_version < "4.0" \ +yarl==1.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51 \ --hash=sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce \ --hash=sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559 \ @@ -1427,6 +1421,6 @@ yarl==1.9.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958 \ --hash=sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749 \ --hash=sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 47d55ab839c..4ae8fe5ba24 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -12,8 +12,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" @@ -32,9 +30,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.2.0" @@ -752,9 +747,6 @@ files = [ {file = "importlib_resources-5.13.0.tar.gz", hash = "sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528"}, ] -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] @@ -1799,7 +1791,6 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] @@ -1968,5 +1959,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "232fb179c8f928013bd75a092e84af12b5ebe6bc0e2c0f92513e98a39f01ce2b" +python-versions = "^3.10" +content-hash = "24a770301d13b18056f133e701e4b496878ae735c322d9dd2f3c2131d0065f05" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index 911c6cd02c8..cd76078d3ee 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -6,7 +6,7 @@ authors = ["MinVWS "] license = "EUPL" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" alembic = "^1.8.1" anyio = "^4.2.0" asgiref = "^3.5.2" @@ -83,5 +83,5 @@ requires = ["setuptools>=65", "wheel"] build-backend = "setuptools.build_meta:__legacy__" [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index 9cc4876e1e3..a92858992ea 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -1,25 +1,25 @@ -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -astroid==2.15.8 ; python_version >= "3.8" and python_version < "4.0" \ +astroid==2.15.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c \ --hash=sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -bcrypt==4.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +bcrypt==4.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02d9ef8915f72dd6daaef40e0baeef8a017ce624369f09754baf32bb32dba25f \ --hash=sha256:1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5 \ --hash=sha256:2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb \ @@ -47,13 +47,13 @@ bcrypt==4.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c \ --hash=sha256:f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7 \ --hash=sha256:fbe188b878313d01b7718390f31528be4010fed1faa798c5a1d0469c9c48c369 -cachetools==5.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +cachetools==5.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \ --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -106,7 +106,7 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -197,13 +197,13 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -236,22 +236,22 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ +ecdsa==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49 \ --hash=sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ @@ -316,7 +316,7 @@ greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -371,31 +371,31 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.13.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==5.13.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-resources==5.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528 \ --hash=sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2 -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -isort==5.13.2 ; python_version >= "3.8" and python_version < "4.0" \ +isort==5.13.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109 \ --hash=sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6 -lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ +lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56 \ --hash=sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4 \ --hash=sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8 \ @@ -433,10 +433,10 @@ lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -497,73 +497,73 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mccabe==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +mccabe==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e -mypy-extensions==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +mypy-extensions==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -passlib[bcrypt]==1.7.4 ; python_version >= "3.8" and python_version < "4.0" \ +passlib[bcrypt]==1.7.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1 \ --hash=sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04 -pathspec==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +pathspec==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a \ --hash=sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -platformdirs==3.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +platformdirs==3.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e -pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -prometheus-client==0.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +prometheus-client==0.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -575,7 +575,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -589,16 +589,16 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pyasn1-modules==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1-modules==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \ --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d -pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1==0.4.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -678,13 +678,13 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \ @@ -695,46 +695,46 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -python-jose[cryptography]==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.6 ; python_version >= "3.8" and python_version < "4.0" \ +python-multipart==0.0.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132 \ --hash=sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18 -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3161ng==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +rfc3161ng==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e88614da61b22abd591577f9dd39d3a030335f9e8a12d8bc001149c17d0a01e \ --hash=sha256:81fe7e4488f523c758b1206bf5e72ba2066b78f2812107b1b7bb16a7596e524b -rsa==4.9 ; python_version >= "3.8" and python_version < "4" \ +rsa==4.9 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 -setuptools==68.2.2 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==68.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ @@ -781,25 +781,25 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -toml==0.10.2 ; python_version >= "3.8" and python_version < "4.0" \ +toml==0.10.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f -tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -870,6 +870,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/bytes/requirements.txt b/bytes/requirements.txt index ec1de86209e..672228512d2 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -1,19 +1,19 @@ -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -bcrypt==4.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +bcrypt==4.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02d9ef8915f72dd6daaef40e0baeef8a017ce624369f09754baf32bb32dba25f \ --hash=sha256:1c28973decf4e0e69cee78c68e30a523be441972c826703bb93099868a8ff5b5 \ --hash=sha256:2a298db2a8ab20056120b45e86c00a0a5eb50ec4075b6142db35f593b97cb3fb \ @@ -41,13 +41,13 @@ bcrypt==4.1.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb3bd3321517916696233b5e0c67fd7d6281f0ef48e66812db35fc963a422a1c \ --hash=sha256:f70d9c61f9c4ca7d57f3bfe88a5ccf62546ffbadf3681bb1e268d9d2e41c91a7 \ --hash=sha256:fbe188b878313d01b7718390f31528be4010fed1faa798c5a1d0469c9c48c369 -cachetools==5.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +cachetools==5.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \ --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -100,7 +100,7 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -191,13 +191,13 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -230,22 +230,22 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ +ecdsa==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49 \ --hash=sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ @@ -310,7 +310,7 @@ greenlet==2.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -365,28 +365,28 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.13.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==5.13.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-resources==5.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528 \ --hash=sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2 -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -447,55 +447,55 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -passlib[bcrypt]==1.7.4 ; python_version >= "3.8" and python_version < "4.0" \ +passlib[bcrypt]==1.7.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1 \ --hash=sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -prometheus-client==0.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +prometheus-client==0.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -507,7 +507,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -521,16 +521,16 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pyasn1-modules==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1-modules==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5bd01446b736eb9d31512a30d46c1ac3395d676c6f3cafa4c03eb54b9925631c \ --hash=sha256:d3ccd6ed470d9ffbc716be08bd90efbd44d0734bc9303818f7336070984a162d -pyasn1==0.4.8 ; python_version >= "3.8" and python_version < "4.0" \ +pyasn1==0.4.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d \ --hash=sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -610,13 +610,13 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \ @@ -627,37 +627,37 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -python-jose[cryptography]==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.6 ; python_version >= "3.8" and python_version < "4.0" \ +python-multipart==0.0.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132 \ --hash=sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18 -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rfc3161ng==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +rfc3161ng==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e88614da61b22abd591577f9dd39d3a030335f9e8a12d8bc001149c17d0a01e \ --hash=sha256:81fe7e4488f523c758b1206bf5e72ba2066b78f2812107b1b7bb16a7596e524b -rsa==4.9 ; python_version >= "3.8" and python_version < "4" \ +rsa==4.9 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 -setuptools==68.2.2 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==68.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87 \ --hash=sha256:b454a35605876da60632df1a60f736524eb73cc47bbc9f3f1ef1b644de74fd2a -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ @@ -704,19 +704,19 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -787,6 +787,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/cveapi/pyproject.toml b/cveapi/pyproject.toml index 8638a520418..e316081e90f 100644 --- a/cveapi/pyproject.toml +++ b/cveapi/pyproject.toml @@ -1,5 +1,5 @@ [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 [tool.poetry] diff --git a/keiko/poetry.lock b/keiko/poetry.lock index bc187fd7ada..3fabcf9010d 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -11,9 +11,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.2.0" @@ -1064,7 +1061,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -1197,7 +1193,6 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] @@ -1366,5 +1361,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "030b7816ef118bfc426ef581e592b4d12ab52705234be2218f736269fc3f07bf" +python-versions = "^3.10" +content-hash = "7a4ad540c38281f21293534290733d664cc277b53cc1d0e18c52cdaad040e21a" diff --git a/keiko/pyproject.toml b/keiko/pyproject.toml index 51a2fea4c57..718dca7d3ae 100644 --- a/keiko/pyproject.toml +++ b/keiko/pyproject.toml @@ -6,7 +6,7 @@ authors = ["MinVWS "] license = "EUPL" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" click = "^8.1.3" pydantic = "^2.6.0" Jinja2 = "^3.1.3" @@ -36,5 +36,5 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index 1e989365703..6f9376a5eed 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -1,19 +1,19 @@ -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -104,25 +104,25 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -177,31 +177,31 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ @@ -252,61 +252,61 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pathspec==0.11.2 ; python_version >= "3.8" and python_version < "4.0" \ +pathspec==0.11.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 -pluggy==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 -prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ +prompt-toolkit==3.0.43 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -318,7 +318,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -398,70 +398,70 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pytest-dotenv==0.5.2 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-dotenv==0.5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2dc6c3ac6d8764c71c6d2804e902d0ff810fa19692e95fe138aefc9b1aa73732 \ --hash=sha256:40a2cece120a213898afaa5407673f6bd924b1fa7eafce6bda0e8abffe2f710f -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.4 ; python_version >= "3.8" and python_version < "4.0" \ +rich-click==1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -robotframework-debuglibrary==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-debuglibrary==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2bfb2636ead7be440c224317891b4b406a9a71d84b26924031ccf3791a00b96 \ --hash=sha256:c8e135c7561721d36210d6f59a09b7538064367e82d8a3be67cb87088cf9cba7 -robotframework-requests==0.9.6 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-requests==0.9.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 -robotframework==7.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework==7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" \ +wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -532,6 +532,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/keiko/requirements.txt b/keiko/requirements.txt index b1f22f39801..6cdb6f56d36 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -1,19 +1,19 @@ -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -104,25 +104,25 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -177,19 +177,19 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ @@ -240,46 +240,46 @@ markupsafe==2.1.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -291,7 +291,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -371,37 +371,37 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -python-dotenv==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -472,6 +472,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/mula/poetry.lock b/mula/poetry.lock index 6787d2e64f3..ead9bc3c9ed 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -12,8 +12,6 @@ files = [ ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" @@ -32,9 +30,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.2.0" @@ -360,7 +355,6 @@ files = [ [package.dependencies] python-dateutil = ">=2.4" -typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\""} [[package]] name = "fastapi" @@ -621,24 +615,6 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "6.1.1" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] - [[package]] name = "iniconfig" version = "2.0.0" @@ -1548,7 +1524,6 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] @@ -1723,5 +1698,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "243c7f242dd5911d989d86d2464722ceedc97f9682fa1bcbeef08ab3e26a0a54" +python-versions = "^3.10" +content-hash = "4e5625712d007ba1dc4323ae276a6df4609f98b8f2e46249f2c90302c7a59e3a" diff --git a/mula/pyproject.toml b/mula/pyproject.toml index a3ab0fd9f5f..c0ed4b80a31 100644 --- a/mula/pyproject.toml +++ b/mula/pyproject.toml @@ -6,7 +6,7 @@ authors = ["MinVWS "] license = "EUPL" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" alembic = "^1.12.1" fastapi = "^0.109.1" mmh3 = "^4.0.1" @@ -54,5 +54,5 @@ omit = [ ] [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index 7a84aee1376..09816990e80 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -1,22 +1,22 @@ -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -107,13 +107,13 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ @@ -166,28 +166,28 @@ coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +faker==22.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ +greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -246,7 +246,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and python_version < "4.0" and (platfo --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -301,31 +301,28 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -386,7 +383,7 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +mmh3==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ --hash=sha256:073d57425a23721730d3ff5485e2da489dd3c90b04e86243dd7211f889898106 \ @@ -467,58 +464,58 @@ mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f90938ff137130e47bcec8dc1f4ceb02f10178c766e2ef58a9f657ff1f62d124 \ --hash=sha256:fa7eacd2b830727ba3dd65a365bed8a5c992ecd0c8348cf39a05cc77d22f4970 \ --hash=sha256:fefef92e9c544a8dbc08f77a8d1b6d48006a750c4375bbcd5ff8199d761e263b -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -prometheus-client==0.19.0 ; python_version >= "3.8" and python_version < "4.0" \ +prometheus-client==0.19.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1 \ --hash=sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -530,7 +527,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psutil==5.9.8 ; python_version >= "3.8" and python_version < "4.0" \ +psutil==5.9.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \ --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \ --hash=sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8 \ @@ -547,7 +544,7 @@ psutil==5.9.8 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631 \ --hash=sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4 \ --hash=sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8 -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -561,7 +558,7 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -641,39 +638,39 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -retry2==0.9.5 ; python_version >= "3.8" and python_version < "4.0" \ +retry2==0.9.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f7fee13b1e15d0611c462910a6aa72a8919823988dd0412152bc3719c89a4e55 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==2.0.25 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9 \ --hash=sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d \ --hash=sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e \ @@ -723,25 +720,25 @@ sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -structlog==23.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +structlog==23.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:24b42b914ac6bc4a4e6f716e82ac70d7fb1e8c3b1035a765591953bfc37101a5 \ --hash=sha256:d6922a88ceabef5b13b9eda9c4043624924f60edbb00397f4d193bd754cde60a -tomli==2.0.1 ; python_version >= "3.8" and python_full_version <= "3.11.0a6" \ +tomli==2.0.1 ; python_version >= "3.10" and python_full_version <= "3.11.0a6" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -812,6 +809,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/mula/requirements.txt b/mula/requirements.txt index 9afb083665b..2880bed90b6 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -1,22 +1,22 @@ -alembic==1.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2edcc97bed0bd3272611ce3a98d98279e9c209e7186e43e75bbb1b2bdfdbcc43 \ --hash=sha256:4932c8558bf68f2ee92b9bbcb8218671c627064d5b08939437af6d77dc05e595 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -107,28 +107,28 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -decorator==5.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ +greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -187,7 +187,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and python_version < "4.0" and (platfo --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -242,22 +242,19 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -mako==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -318,7 +315,7 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +mmh3==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ --hash=sha256:073d57425a23721730d3ff5485e2da489dd3c90b04e86243dd7211f889898106 \ @@ -399,52 +396,52 @@ mmh3==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f90938ff137130e47bcec8dc1f4ceb02f10178c766e2ef58a9f657ff1f62d124 \ --hash=sha256:fa7eacd2b830727ba3dd65a365bed8a5c992ecd0c8348cf39a05cc77d22f4970 \ --hash=sha256:fefef92e9c544a8dbc08f77a8d1b6d48006a750c4375bbcd5ff8199d761e263b -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -prometheus-client==0.19.0 ; python_version >= "3.8" and python_version < "4.0" \ +prometheus-client==0.19.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1 \ --hash=sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -456,7 +453,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -470,7 +467,7 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -550,27 +547,27 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -retry2==0.9.5 ; python_version >= "3.8" and python_version < "4.0" \ +retry2==0.9.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f7fee13b1e15d0611c462910a6aa72a8919823988dd0412152bc3719c89a4e55 -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==2.0.25 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9 \ --hash=sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d \ --hash=sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e \ @@ -620,22 +617,22 @@ sqlalchemy==2.0.25 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -structlog==23.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +structlog==23.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:24b42b914ac6bc4a4e6f716e82ac70d7fb1e8c3b1035a765591953bfc37101a5 \ --hash=sha256:d6922a88ceabef5b13b9eda9c4043624924f60edbb00397f4d193bd754cde60a -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -706,6 +703,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index d45f567384d..81cb8a3c723 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -25,9 +25,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.2.0" @@ -97,37 +94,6 @@ files = [ {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"}, ] -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -optional = false -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] - -[package.dependencies] -tzdata = {version = "*", optional = true, markers = "extra == \"tzdata\""} - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "beautifulsoup4" version = "4.12.3" @@ -172,7 +138,6 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = ">=0.2.1", markers = "python_version < \"3.9\""} billiard = ">=4.2.0,<5.0" click = ">=8.1.2,<9.0" click-didyoumean = ">=0.3.0" @@ -793,24 +758,6 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "6.1.1" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] - [[package]] name = "iniconfig" version = "2.0.0" @@ -877,9 +824,7 @@ files = [ [package.dependencies] attrs = ">=22.2.0" -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rpds-py = ">=0.7.1" @@ -899,7 +844,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.31.0" [[package]] @@ -915,8 +859,6 @@ files = [ [package.dependencies] amqp = ">=5.1.1,<6.0.0" -"backports.zoneinfo" = {version = ">=0.2.1", extras = ["tzdata"], markers = "python_version < \"3.9\""} -typing-extensions = {version = "*", markers = "python_version < \"3.10\""} vine = "*" [package.extras] @@ -1305,17 +1247,6 @@ gevent = ["gevent"] tornado = ["tornado"] twisted = ["twisted"] -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "pluggy" version = "1.4.0" @@ -1778,7 +1709,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -2116,7 +2046,6 @@ files = [ [package.dependencies] anyio = ">=3.4.0,<5" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] @@ -2374,5 +2303,5 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "b75f1b93bc8b567409229c94a493968499193ae88db874d5a1d5a6770450a467" +python-versions = "^3.10" +content-hash = "bb5efa3f0d39db3ddd79f5efc3710abfdea9ca6bae5c549582d6ebcd4556f8a0" diff --git a/octopoes/pyproject.toml b/octopoes/pyproject.toml index 568e757e3c0..ad25d000250 100644 --- a/octopoes/pyproject.toml +++ b/octopoes/pyproject.toml @@ -10,7 +10,7 @@ requires = ["setuptools>=62.2", "wheel"] build-backend = "setuptools.build_meta:__legacy__" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" requests = "^2.31.0" pydantic = "^2.4.2" fastapi = "^0.109.1" @@ -49,7 +49,7 @@ httpx = "^0.26.0" pytest-timeout = "^2.1.0" [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 [tool.pytest.ini_options] diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index 56782e4b367..6ae67c88edf 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -1,68 +1,34 @@ -amqp==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +amqp==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637 \ --hash=sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -backports-zoneinfo[tzdata]==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4" \ +beautifulsoup4==4.12.3 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed -billiard==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +billiard==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d \ --hash=sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c -celery==5.3.6 ; python_version >= "3.8" and python_version < "4.0" \ +celery==5.3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9 \ --hash=sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -153,22 +119,22 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click-didyoumean==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +click-didyoumean==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667 \ --hash=sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035 -click-plugins==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +click-plugins==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 -click-repl==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +click-repl==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9 \ --hash=sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ @@ -221,25 +187,25 @@ coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ +greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -298,7 +264,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -353,49 +319,46 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 -httpx==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -jsonpatch==1.33 ; python_version >= "3.8" and python_version < "4.0" \ +jsonpatch==1.33 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c -jsonpointer==2.4 ; python_version >= "3.8" and python_version < "4.0" \ +jsonpointer==2.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a \ --hash=sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -kombu==5.3.5 ; python_version >= "3.8" and python_version < "4.0" \ +kombu==5.3.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488 \ --hash=sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93 -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -456,67 +419,64 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pathspec==0.11.2 ; python_version >= "3.8" and python_version < "4.0" \ +pathspec==0.11.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ +prompt-toolkit==3.0.43 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -528,7 +488,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -608,40 +568,40 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest-env==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b -pytest-mock==3.12.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-mock==3.12.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f \ --hash=sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9 -pytest-timeout==2.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-timeout==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90 \ --hash=sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2 -pytest==8.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ @@ -692,36 +652,36 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf -requests-mock==1.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests-mock==1.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4 \ --hash=sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15 -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.4 ; python_version >= "3.8" and python_version < "4.0" \ +rich-click==1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -robotframework-httplibrary==0.4.2 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-httplibrary==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f45c9ac8d5a56386a36dc354b7491ee54bf068ff525c8011cb83184c19f56aae -robotframework-requests==0.9.6 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-requests==0.9.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 -robotframework==7.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework==7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -821,19 +781,19 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==67.8.0 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==67.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \ --hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.5 ; python_version >= "3.8" and python_version < "4" \ +soupsieve==2.5 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 -sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.48 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:005e942b451cad5285015481ae4e557ff4154dde327840ba91b9ac379be3b6ce \ --hash=sha256:066c2b0413e8cb980e6d46bf9d35ca83be81c20af688fedaef01450b06e4aa5e \ --hash=sha256:0817c181271b0ce5df1aa20949f0a9e2426830fed5ecdcc8db449618f12c2730 \ @@ -875,43 +835,43 @@ sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb0808ad34167f394fea21bd4587fc62f3bd81bba232a1e7fbdfa17e6cfa7cd7 \ --hash=sha256:fbde5642104ac6e95f96e8ad6d18d9382aa20672008cf26068fe36f3004491df \ --hash=sha256:fe1dd2562313dd9fe1778ed56739ad5d9aae10f9f43d9f4cf81d65b0c85168bb -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 -tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ +tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -vine==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +vine==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc \ --hash=sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0 -waitress==2.1.2 ; python_version >= "3.8" and python_version < "4" \ +waitress==2.1.2 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a \ --hash=sha256:780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba -wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" \ +wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 -webob==1.8.7 ; python_version >= "3.8" and python_version < "4" \ +webob==1.8.7 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:73aae30359291c14fa3b956f8b5ca31960e420c28c1bec002547fb04928cf89b \ --hash=sha256:b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323 -webtest==3.0.0 ; python_version >= "3.8" and python_version < "4" \ +webtest==3.0.0 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:2a001a9efa40d2a7e5d9cd8d1527c75f41814eb6afce2c3d207402547b1e5ead \ --hash=sha256:54bd969725838d9861a9fa27f8d971f79d275d94ae255f5c501f53bb6d9929eb -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -982,6 +942,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index 95df191aaaa..fb9ab75fca1 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -1,65 +1,31 @@ -amqp==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +amqp==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637 \ --hash=sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -backports-zoneinfo[tzdata]==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -billiard==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +billiard==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:07aa978b308f334ff8282bd4a746e681b3513db5c9a514cbdd810cbbdc19714d \ --hash=sha256:9a3c3184cb275aa17a732f93f65b20c525d3d9f253722d26a82194803ade5a2c -celery==5.3.6 ; python_version >= "3.8" and python_version < "4.0" \ +celery==5.3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9 \ --hash=sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -150,40 +116,40 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click-didyoumean==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +click-didyoumean==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0713dc7a1de3f06bc0df5a9567ad19ead2d3d5689b434768a6145bff77c0667 \ --hash=sha256:f184f0d851d96b6d29297354ed981b7dd71df7ff500d82fa6d11f0856bee8035 -click-plugins==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +click-plugins==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 -click-repl==0.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +click-repl==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9 \ --hash=sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" and platform_system == "Windows" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.2 ; python_version >= "3.8" and python_version < "4.0" \ +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 -filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ +filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ +greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67 \ --hash=sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6 \ --hash=sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257 \ @@ -242,7 +208,7 @@ greenlet==3.0.3 ; python_version >= "3.8" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ @@ -297,79 +263,73 @@ grpcio==1.60.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd -h11==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -kombu==5.3.5 ; python_version >= "3.8" and python_version < "4.0" \ +kombu==5.3.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488 \ --hash=sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93 -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pika==1.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ +prompt-toolkit==3.0.43 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 -protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ @@ -381,7 +341,7 @@ protobuf==4.25.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -461,22 +421,22 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ @@ -527,16 +487,16 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -636,16 +596,16 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==67.8.0 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==67.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \ --hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ +sqlalchemy==1.4.48 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:005e942b451cad5285015481ae4e557ff4154dde327840ba91b9ac379be3b6ce \ --hash=sha256:066c2b0413e8cb980e6d46bf9d35ca83be81c20af688fedaef01450b06e4aa5e \ --hash=sha256:0817c181271b0ce5df1aa20949f0a9e2426830fed5ecdcc8db449618f12c2730 \ @@ -687,31 +647,31 @@ sqlalchemy==1.4.48 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb0808ad34167f394fea21bd4587fc62f3bd81bba232a1e7fbdfa17e6cfa7cd7 \ --hash=sha256:fbde5642104ac6e95f96e8ad6d18d9382aa20672008cf26068fe36f3004491df \ --hash=sha256:fe1dd2562313dd9fe1778ed56739ad5d9aae10f9f43d9f4cf81d65b0c85168bb -starlette==0.36.3 ; python_version >= "3.8" and python_version < "4.0" \ +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tldextract==3.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ +tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvicorn==0.26.0 ; python_version >= "3.8" and python_version < "4.0" \ +uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d -vine==5.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +vine==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc \ --hash=sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0 -wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" \ +wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -782,6 +742,6 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/poetry.lock b/poetry.lock index c8ebadceddb..f2905f68e08 100644 --- a/poetry.lock +++ b/poetry.lock @@ -22,9 +22,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "babel" version = "2.14.0" @@ -36,9 +33,6 @@ files = [ {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - [package.extras] dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] @@ -210,25 +204,6 @@ files = [ {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, ] -[[package]] -name = "importlib-metadata" -version = "7.0.1" -description = "Read metadata from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, - {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, -] - -[package.dependencies] -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - [[package]] name = "jinja2" version = "3.1.3" @@ -560,17 +535,6 @@ files = [ [package.extras] cli = ["click (>=5.0)"] -[[package]] -name = "pytz" -version = "2023.4" -description = "World timezone definitions, modern and historical" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, - {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, -] - [[package]] name = "pyyaml" version = "6.0.1" @@ -665,7 +629,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -726,7 +689,6 @@ babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} docutils = ">=0.18.1,<0.21" imagesize = ">=1.3" -importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" Pygments = ">=2.13" @@ -928,22 +890,7 @@ brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] -[[package]] -name = "zipp" -version = "3.17.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "b94a5be1f80aa058acbd867fc83a7cb1e19b5c2b5a90773c3219a2c521b601a6" +python-versions = "^3.10" +content-hash = "892541d00399ca2699e4c55805103332a1e10d00faef76379bfb396240a3f02e" diff --git a/pyproject.toml b/pyproject.toml index d22be70338e..2026b1a3fae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 [tool.mypy] -python_version = "3.8" +python_version = "3.10" plugins = ["pydantic.mypy"] strict = false ignore_missing_imports = true @@ -26,6 +26,8 @@ select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH ignore = [ "UP006", # Is not compatible with Python 3.8 "UP007", # Is not compatible with Python 3.8 + "UP035", # Ignored temporarily until we've updated typing to Python 3.10 + "UP038", # Ignored temporarily until we've updated typing to Python 3.10 "A003", # Built-in shadowing is usually not a problem and some built-ins have very generic names "SIM108", # Ternary operator is not always more readable "S101", # Assert use is normal in pytest tests @@ -68,8 +70,8 @@ exclude = [ # Same as Black. line-length = 120 -# Support Python 3.8 and higher -target-version = "py38" +# Support Python 3.10 and higher +target-version = "py310" # Add "Example" to allowed code comments task-tags = ["Example", "todo", "TODO", "FIXME"] @@ -112,7 +114,7 @@ requires = ["poetry-core>=1.0.0","setuptools>=65", "setuptools_scm[toml]>=7.1"] build-backend = "poetry.core.masonry.api" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" sphinx = "<8" sphinx_rtd_theme = "2.0.0" sphinxcontrib-mermaid = "^0.9.2" diff --git a/requirements.txt b/requirements.txt index cf313e99b65..1105973d5dd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,16 +1,16 @@ -alabaster==0.7.13 ; python_version >= "3.8" and python_version < "4.0" \ +alabaster==0.7.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3 \ --hash=sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2 -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -babel==2.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +babel==2.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363 \ --hash=sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -101,31 +101,28 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -docutils==0.20.1 ; python_version >= "3.8" and python_version < "4.0" \ +docutils==0.20.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6 \ --hash=sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -imagesize==1.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +imagesize==1.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b \ --hash=sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a -importlib-metadata==7.0.1 ; python_version >= "3.8" and python_version < "3.10" \ - --hash=sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e \ - --hash=sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc -jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -186,19 +183,19 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdit-py-plugins==0.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +mdit-py-plugins==0.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9 \ --hash=sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -myst-parser==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +myst-parser==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14 \ --hash=sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -278,22 +275,19 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pytz==2023.4 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ @@ -344,60 +338,57 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -settings-doc==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +settings-doc==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:078c3873813145c772bd9670740153569d27e6b2858bf702ec5bb5d0454dcdaa \ --hash=sha256:3c300987a2a05ee8481ed19d5ca40e2c3cc222d1796b4262b50c234545dd52a4 -shellingham==1.5.4 ; python_version >= "3.8" and python_version < "4.0" \ +shellingham==1.5.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de -snowballstemmer==2.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +snowballstemmer==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1 \ --hash=sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a -sphinx-rtd-theme==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +sphinx-rtd-theme==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b \ --hash=sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586 -sphinx==7.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +sphinx==7.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f \ --hash=sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe -sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228 \ --hash=sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e -sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e \ --hash=sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4 -sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff \ --hash=sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903 -sphinxcontrib-jquery==4.1 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-jquery==4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a \ --hash=sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae -sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 \ --hash=sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8 -sphinxcontrib-mermaid==0.9.2 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-mermaid==0.9.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:252ef13dd23164b28f16d8b0205cf184b9d8e2b714a302274d9f59eb708e77af \ --hash=sha256:6795a72037ca55e65663d2a2c1a043d636dc3d30d418e56dd6087d1459d98a5d -sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72 \ --hash=sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6 -sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.8" and python_version < "4.0" \ +sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd \ --hash=sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952 -typer[all]==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typer[all]==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "3.10" \ - --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ - --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/rocky/poetry.lock b/rocky/poetry.lock index 256e81d0f5c..6c58292b656 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -11,9 +11,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" version = "4.2.0" @@ -129,34 +126,6 @@ files = [ {file = "backports.cached_property-1.0.2-py3-none-any.whl", hash = "sha256:baeb28e1cd619a3c9ab8941431fe34e8490861fb998c6c4590693d50171db0cc"}, ] -[[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" -optional = false -python-versions = ">=3.6" -files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, -] - -[package.extras] -tzdata = ["tzdata"] - [[package]] name = "beautifulsoup4" version = "4.12.3" @@ -718,7 +687,6 @@ files = [ [package.dependencies] asgiref = ">=3.6.0,<4" -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} sqlparse = ">=0.3.1" tzdata = {version = "*", markers = "sys_platform == \"win32\""} @@ -1087,7 +1055,6 @@ files = [ [package.dependencies] python-dateutil = ">=2.4" -typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\""} [[package]] name = "fonttools" @@ -1455,24 +1422,6 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "6.1.1" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, - {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, -] - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] - [[package]] name = "inflection" version = "0.3.1" @@ -1552,9 +1501,7 @@ files = [ [package.dependencies] attrs = ">=22.2.0" -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rpds-py = ">=0.7.1" @@ -1574,7 +1521,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.31.0" [[package]] @@ -2262,17 +2208,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa typing = ["typing-extensions"] xmp = ["defusedxml"] -[[package]] -name = "pkgutil-resolve-name" -version = "1.3.10" -description = "Resolve a name to an object." -optional = false -python-versions = ">=3.6" -files = [ - {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, - {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, -] - [[package]] name = "pluggy" version = "1.4.0" @@ -2635,9 +2570,6 @@ files = [ {file = "pypdf-4.0.1.tar.gz", hash = "sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173"}, ] -[package.dependencies] -typing_extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.10\""} - [package.extras] crypto = ["PyCryptodome", "cryptography"] dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "pytest-socket", "pytest-timeout", "pytest-xdist", "wheel"] @@ -3202,7 +3134,6 @@ files = [ [package.dependencies] markdown-it-py = ">=2.2.0" pygments = ">=2.13.0,<3.0.0" -typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] jupyter = ["ipywidgets (>=7.5.1,<9)"] @@ -3706,7 +3637,6 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] @@ -4143,5 +4073,5 @@ test = ["pytest"] [metadata] lock-version = "2.0" -python-versions = "^3.8" -content-hash = "f9396d2420149e5bcd125638efd73fe2dcedffdbc3b9faffae6c59466412d5d0" +python-versions = "^3.10" +content-hash = "01dabbe69c799ae069f615c6d5aa9e622df35b49831b326c3b6ced698af72094" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index dd9028c06aa..9ea9a1f478a 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -6,7 +6,7 @@ authors = ["MinVWS "] license = "EUPL" [tool.poetry.dependencies] -python = "^3.8" +python = "^3.10" ares = "^0.7.1" asgiref = "^3.6.0" beautifulsoup4 = "^4.11.2" @@ -110,5 +110,5 @@ blank_line_after_tag = "load,extends,include" ignore = "H006,H016,H017,H030,H031" [tool.black] -target-version = ["py38", "py39", "py310", "py311"] +target-version = ["py310", "py311"] line-length = 120 diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index 8b5c8e77e87..c4b4b8f6d66 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -1,50 +1,33 @@ -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -arabic-reshaper==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 -ares==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ +ares==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:28823cad841c96f0a5f26452eaddf5831be8363f3128cd5b1403bf70bcb87965 -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -asn1crypto==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +asn1crypto==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -backports-cached-property==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +backports-cached-property==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9306f9eed6ec55fd156ace6bc1094e2c86fae5fb2bf07b6a9c00745c656e75dd \ --hash=sha256:baeb28e1cd619a3c9ab8941431fe34e8490861fb998c6c4590693d50171db0cc -backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" \ +beautifulsoup4==4.12.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed -brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +brotli==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208 \ --hash=sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48 \ --hash=sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354 \ @@ -128,7 +111,7 @@ brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596 \ --hash=sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2 \ --hash=sha256:fdc3ff3bfccdc6b9cc7c342c03aa2400683f0cb891d46e94b64a197910dc4064 -brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_version >= "3.8" and python_version < "4.0" \ +brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b \ --hash=sha256:1a807d760763e398bbf2c6394ae9da5815901aa93ee0a37bca5efe78d4ee3171 \ --hash=sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb \ @@ -156,10 +139,10 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -212,10 +195,10 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +chardet==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -306,13 +289,13 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ +coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ @@ -365,7 +348,7 @@ coverage[toml]==7.4.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -398,78 +381,78 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -cssbeautifier==1.14.11 ; python_version >= "3.8" and python_version < "4.0" \ +cssbeautifier==1.14.11 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:40544c2b62bbcb64caa5e7f37a02df95654e5ce1bcacadac4ca1f3dc89c31513 -cssselect2==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 -cwe==1.6 ; python_version >= "3.8" and python_version < "4.0" \ +cwe==1.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:bad040864f52ccd494763d317eb77e7c604ce323b3a17164d43a97fea4ebb9e8 \ --hash=sha256:eed7fdbe3565f975bb9ec6cef6f42cb4eb721ec6155fa954f3b1b106351d981e -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -django-admin-auto-tests @ git+https://github.com/dekkers/django-admin-auto-tests@f6eb4cbb9112b5aa933313d79e4da823adb41e1e ; python_version >= "3.8" and python_version < "4.0" -django-appconf==1.0.6 ; python_version >= "3.8" and python_version < "4.0" \ +django-admin-auto-tests @ git+https://github.com/dekkers/django-admin-auto-tests@f6eb4cbb9112b5aa933313d79e4da823adb41e1e ; python_version >= "3.10" and python_version < "4.0" +django-appconf==1.0.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993 \ --hash=sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf -django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.8" and python_version < "4.0" -django-csp==3.7 ; python_version >= "3.8" and python_version < "4.0" \ +django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.10" and python_version < "4.0" +django-csp==3.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a \ --hash=sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727 -django-environ==0.11.2 ; python_version >= "3.8" and python_version < "4" \ +django-environ==0.11.2 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05 \ --hash=sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be -django-formtools==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +django-formtools==2.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93 \ --hash=sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a -django-otp==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +django-otp==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060 \ --hash=sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c -django-password-validators==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ +django-password-validators==1.7.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7175aefa6e86dc002dd3539327bf2d752097651704927dc409a669259e0d2195 \ --hash=sha256:f243a82957e9b17a0c7cf5580f9d7588471cb6530c2dce7ee4e1222dddfe5768 -django-phonenumber-field==6.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +django-phonenumber-field==6.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:72a3e7a3e7493bf2a12c07a3bc77ce89813acc16592bf04d0eee3b5a452097ed \ --hash=sha256:a31b4f05ac0ff898661516c84940f83adb5cdcf0ae4b9b1d31bb8ad3ff345b58 -django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc4b9718e22d5acd6cf1301a1036b9 ; python_version >= "3.8" and python_version < "4.0" -django-tagulous==1.3.3 ; python_version >= "3.8" and python_version < "4.0" \ +django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc4b9718e22d5acd6cf1301a1036b9 ; python_version >= "3.10" and python_version < "4.0" +django-tagulous==1.3.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4.0" \ +django-two-factor-auth==1.15.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 -django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ +django-weasyprint==2.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.10 ; python_version >= "3.8" and python_version < "4.0" \ +django==4.2.10 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1 \ --hash=sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13 -djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -djlint==1.34.1 ; python_version >= "3.8" and python_version < "4.0" \ +djlint==1.34.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8 \ --hash=sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346 -dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 -drf-standardized-errors==0.12.6 ; python_version >= "3.8" and python_version < "4.0" \ +drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d -editorconfig==0.12.3 ; python_version >= "3.8" and python_version < "4.0" \ +editorconfig==0.12.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e \ --hash=sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1 -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +faker==22.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 -fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ +fonttools[woff]==4.47.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ @@ -512,10 +495,10 @@ fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +granian==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ @@ -573,7 +556,7 @@ granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 -grpcio-tools==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio-tools==1.56.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02b23a12b91287ebea14b3685735d1d675e77c3cd365ec1771c3e9afbeba1ec6 \ --hash=sha256:0a8767e4de0f573c678313c5de075ac0e163a192bb135018e45015a22f234387 \ --hash=sha256:11cdd9cbf0c09c3a761c6f59dfd7128104be7cd393334efe386d4fc3f990ee1a \ @@ -619,7 +602,7 @@ grpcio-tools==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f3ab1a9fad636302f7307d143f64a9fbd11bc041652bf53bb016006e9a5ca820 \ --hash=sha256:f7302acaa07cf4966c926fcd6a60c8d30a697f730c38168bf83e1519b464115b \ --hash=sha256:fa6d9bdd75d3625dae38372b43696e159c10aa98719b4302b1e94f1ff7878d47 -grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.56.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ --hash=sha256:0409de787ebbf08c9d2bca2bcc7762c1efe72eada164af78b50567a8dfc7253c \ @@ -665,46 +648,43 @@ grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f92a99ab0c7772fb6859bf2e4f44ad30088d18f7c67b83205297bfb229e0d2cf \ --hash=sha256:fb34ace11419f1ae321c36ccaa18d81cd3f20728cd191250be42949d6845bb2d \ --hash=sha256:fdc3a895791af4addbb826808d4c9c35917c59bb5c430d729f44224e51c92d61 -html-tag-names==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +html-tag-names==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04924aca48770f36b5a41c27e4d917062507be05118acb0ba869c97389084297 \ --hash=sha256:eeb69ef21078486b615241f0393a72b41352c5219ee648e7c61f5632d26f0420 -html-void-elements==0.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +html-void-elements==0.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2 \ --hash=sha256:931b88f84cd606fee0b582c28fcd00e41d7149421fb673e1e1abd2f0c4f231f0 -html5lib==1.1 ; python_version >= "3.8" and python_version < "4.0" \ +html5lib==1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -image==1.5.33 ; python_version >= "3.8" and python_version < "4.0" \ +image==1.5.33 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:baa2e09178277daa50f22fd6d1d51ec78f19c12688921cb9ab5808743f097126 -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -inflection==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +inflection==0.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:18ea7fb7a7d152853386523def08736aa8c32636b047ade55f7578c4edeb16ca -iniconfig==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -jinja2==3.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -jsbeautifier==1.14.11 ; python_version >= "3.8" and python_version < "4.0" \ +jsbeautifier==1.14.11 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6b632581ea60dd1c133cd25a48ad187b4b91f526623c4b0fb5443ef805250505 -json5==0.9.14 ; python_version >= "3.8" and python_version < "4.0" \ +json5==0.9.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f \ --hash=sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ +lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56 \ --hash=sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4 \ --hash=sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8 \ @@ -742,7 +722,7 @@ lazy-object-proxy==1.10.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c -lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ +lxml==4.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ @@ -836,10 +816,10 @@ lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b -markdown-it-py==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ @@ -900,73 +880,73 @@ markupsafe==2.1.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdurl==0.1.2 ; python_version >= "3.8" and python_version < "4.0" \ +mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -model-mommy==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +model-mommy==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3d332afce941c57f1990f45b083ba13252ba74fcd1ae43fd047e5af7a70fb312 \ --hash=sha256:40d6e740aad7509e696a324b94cf2b0a104da93c3d4a7924cea1be3d0eb95b4f -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-django==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-django==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3942e54d0cd5f220ff299b8e84b5fb42c9c43d2a8e0bad2cbb47722147a1bc3d \ --hash=sha256:96fb8169a7ed1e5cc1a26b00b9c6556af4b5f11ad6ea69df0e3bd76813baa8e3 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation-wsgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-wsgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0095834dda60f876c7ed00bc16292b40db86f8cfebdf251417adbd9810993644 \ --hash=sha256:4c689d59f8e33d2c7a990e475b7934baca554f35684adc346f0882d974c7dc2d -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -oscrypto==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +oscrypto==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 -overrides==7.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +overrides==7.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a \ --hash=sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 -packaging==23.2 ; python_version >= "3.8" and python_version < "4.0" \ +packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pathspec==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +pathspec==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 -phonenumbers==8.13.29 ; python_version >= "3.8" and python_version < "4.0" \ +phonenumbers==8.13.29 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf -pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ @@ -1035,16 +1015,13 @@ pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -pluggy==1.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -prompt-toolkit==3.0.43 ; python_version >= "3.8" and python_version < "4.0" \ +prompt-toolkit==3.0.43 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 -protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.23.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ --hash=sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288 \ @@ -1058,7 +1035,7 @@ protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -1072,10 +1049,10 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -1155,25 +1132,25 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pydyf==0.8.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a -pygments==2.17.2 ; python_version >= "3.8" and python_version < "4.0" \ +pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pyhanko-certvalidator==0.26.3 ; python_version >= "3.8" and python_version < "4.0" \ +pyhanko-certvalidator==0.26.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 -pyhanko==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyhanko==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 -pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ --hash=sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93 \ @@ -1184,61 +1161,61 @@ pynacl==1.5.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pyotp==2.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyotp==2.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:346b6642e0dbdde3b4ff5a930b664ca82abfa116356ed48cc42c7d6590d36f63 \ --hash=sha256:81c2e5865b8ac55e825b0358e496e1d9387c811e85bb40e71a3b29b288963612 -pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pypdf==4.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a -pyphen==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyphen==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa -pypng==0.20220715.0 ; python_version >= "3.8" and python_version < "4.0" \ +pypng==0.20220715.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c \ --hash=sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1 -pytest-assert-utils==0.3.1 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-assert-utils==0.3.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a8600b666430764eb7a486de3b21af5542425eb5bd211f6eb1ea30930691812b \ --hash=sha256:f4d7fa44506c1ed65eb5369100476d74d5d8a86400c4862eab3ea0e9521a22dd -pytest-common-subject==1.0.6 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-common-subject==1.0.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3717bb80359513dd679744805fc39bf34ed48c872be9cbe616c69291bff54f1c \ --hash=sha256:e3cd860c7e6e4481f29a47f80b41a0c186d146f529a2f346b8a9f3ed4e113f6c -pytest-cov==4.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest-django==4.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-django==4.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2 \ --hash=sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8 -pytest-drf==1.1.3 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-drf==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4d6106f7f313de2e8158ca41550817ca564f1ddcf6ba68a1e2ab404e04b36282 \ --hash=sha256:4f8bd999a0d80654a55145761e5ced7601baf301fdb020ba62a25ac708fe070a -pytest-fixture-order==0.1.4 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-fixture-order==0.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:257693f1c9fcc687c46e2562ee380e4e94f47670effbbce24545c73b00f25366 \ --hash=sha256:6554329dfe1c6961b82c8ab7e3565ad4af279d917317a3d66b2c5ff077d27b97 -pytest-lambda==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-lambda==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e91b6e1f0c13d54fdda0c7b0be3deefca3b65e3c140f3e96d2f4968eb37d65e5 \ --hash=sha256:f7aa827c74be5b2332f2beb9295f46bbffc1826301fc1c0507b077ba2ea8ca4a -pytest-mock==3.12.0 ; python_version >= "3.8" and python_version < "4.0" \ +pytest-mock==3.12.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0972719a7263072da3a21c7f4773069bcc7486027d7e8e1f81d98a47e701bc4f \ --hash=sha256:31a40f038c22cad32287bb43932054451ff5583ff094bca6f675df2f8bc1a6e9 -pytest==7.4.4 ; python_version >= "3.8" and python_version < "4.0" \ +pytest==7.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 -python-bidi==0.4.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-bidi==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e -python-dateutil==2.8.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pytz==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ +pytz==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ @@ -1289,10 +1266,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -qrcode==7.4.2 ; python_version >= "3.8" and python_version < "4.0" \ +qrcode==7.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a \ --hash=sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845 -rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +rcssmin==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72 \ --hash=sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a \ --hash=sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a \ @@ -1316,10 +1293,10 @@ rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1 \ --hash=sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f \ --hash=sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51 -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -regex==2023.12.25 ; python_version >= "3.8" and python_version < "4.0" \ +regex==2023.12.25 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0694219a1d54336fd0445ea382d49d36882415c0134ee1e8332afd1529f0baa5 \ --hash=sha256:086dd15e9435b393ae06f96ab69ab2d333f5d65cbe65ca5a3ef0ec9564dfe770 \ --hash=sha256:094ba386bb5c01e54e14434d4caabf6583334090865b23ef58e0424a6286d3dc \ @@ -1413,7 +1390,7 @@ regex==2023.12.25 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 -reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ +reportlab==3.6.13 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ --hash=sha256:149718c3eaee937f28094325f0dd9ae1add3172c2dacbb93ff5403f37c9d3c57 \ @@ -1459,16 +1436,16 @@ reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:f1993a68c0edc45895d3df350d01b0456efe79aaf309cef777762742be501f2a \ --hash=sha256:faeebde62f0f6ad86985bec5685411260393d2eb7ba907972da56af586b644e8 \ --hash=sha256:ff09a0a1e5cef05309ac09dfc5185e8151d927bcf45470d2f540c96260f8a355 -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ +rich-click==1.7.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:bc4163d4e2a3361e21c4d72d300eca6eb8896dfc978667923cb1d4937b8769a3 \ --hash=sha256:bced1594c497dc007ab49508ff198bb437c576d01291c13a61658999066481f4 -rich==13.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +rjsmin==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:113132a40ce7d03b2ced4fac215f0297338ed1c207394b739266efab7831988b \ --hash=sha256:122aa52bcf7ad9f12728d309012d1308c6ecfe4d6b09ea867a110dcad7b7728c \ --hash=sha256:145c6af8df42d8af102d0d39a6de2e5fa66aef9e38947cfb9d65377d1b9940b2 \ @@ -1492,30 +1469,30 @@ rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3 \ --hash=sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807 \ --hash=sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65 -robotframework-assertion-engine==1.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-assertion-engine==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26342d7afec1c670bae1a7a65e38b93e9312019ea31524ed7f9f579ccefd1ee6 \ --hash=sha256:db97cf47f5d6d84f8a5f0c8c3d8af9e0d994b25ea00a6ddfa20c3f1bbeaf3c8d -robotframework-browser==16.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-browser==16.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:cee956718a99165cb3aac18758f939a54d324199e4762f54b58c2baa71efa9e7 \ --hash=sha256:eaff862bc9798d8b40927efc2f56d61f8316821c498cc95d9840860cab4a6d69 -robotframework-debuglibrary==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-debuglibrary==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2bfb2636ead7be440c224317891b4b406a9a71d84b26924031ccf3791a00b96 \ --hash=sha256:c8e135c7561721d36210d6f59a09b7538064367e82d8a3be67cb87088cf9cba7 -robotframework-otp==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-otp==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a429c5755760d81aac76a7b5bbf44e49f0d6b480c01784706603232d53d1fcfb -robotframework-postgresqldb==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-postgresqldb==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ab276e83b705b3f115cff02a911dce6000f9e2dfe5efcee58536eac0e0c9e074 \ --hash=sha256:fa28c5fed14e69ef483613b16c8ac76d99329eb4c876e37f31af8b5dabe24987 -robotframework-pythonlibcore==4.3.0 ; python_version >= "3.8" and python_version < "4" \ +robotframework-pythonlibcore==4.3.0 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:29aacdfc19aca812e9ace14cfb8cfd8a14298ed9fbddbeceef964c2c2e84d6c6 \ --hash=sha256:37c63c20fb296b5c202261f78c5baf91c98ee344af52f625fb975d05a16f09b1 -robotframework-tidy==4.8.1 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 -robotframework==6.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +robotframework==6.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789 \ --hash=sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -1615,57 +1592,57 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ +soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 -sqlparse==0.4.4 ; python_version >= "3.8" and python_version < "4.0" \ +sqlparse==0.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \ --hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c -strenum==0.4.15 ; python_version >= "3.8" and python_version < "4.0" \ +strenum==0.4.15 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff \ --hash=sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659 -svglib==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +svglib==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587 -tinycss2==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 -tomli==2.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -toolz==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +toolz==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d -tqdm==4.66.1 ; python_version >= "3.8" and python_version < "4.0" \ +tqdm==4.66.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386 \ --hash=sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7 -typer==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ +tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -tzlocal==5.2 ; python_version >= "3.8" and python_version < "4.0" \ +tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e -uritools==4.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.8" and python_version < "4.0" \ +uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ --hash=sha256:1f354d669586fca96a9a688c585b6257706d216177ac457c92e15709acaece10 \ @@ -1702,7 +1679,7 @@ uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == " --hash=sha256:ed3c28337d2fefc0bac5705b9c66b2702dc392f2e9a69badb1d606e7e7f773bb \ --hash=sha256:edbb4de38535f42f020da1e3ae7c60f2f65402d027a08a8c60dc8569464873a6 \ --hash=sha256:f3b18663efe0012bc4c315f1b64020e44596f5fabc281f5b0d9bc9465288559c -watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ +watchfiles==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc \ --hash=sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365 \ --hash=sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0 \ @@ -1778,22 +1755,22 @@ watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d -wcwidth==0.2.13 ; python_version >= "3.8" and python_version < "4.0" \ +wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 -weasyprint==60.2 ; python_version >= "3.8" and python_version < "4.0" \ +weasyprint==60.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 -webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +webencodings==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 -wheel==0.40.0 ; python_version >= "3.8" and python_version < "4.0" \ +wheel==0.40.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \ --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247 -whitenoise[brotli]==6.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +whitenoise[brotli]==6.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251 \ --hash=sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146 -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -1864,12 +1841,12 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xhtml2pdf==0.2.11 ; python_version >= "3.8" and python_version < "4.0" \ +xhtml2pdf==0.2.11 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 -zopfli==0.2.3 ; python_version >= "3.8" and python_version < "4.0" \ +zopfli==0.2.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0574372283befa5af98fb31407e1fe6822f2f9c437ef69e7fa260e49022d8a65 \ --hash=sha256:082f030b2b7d6d4597ac517816e499c63b92130aa8f4f74a3788ebaa5770f974 \ --hash=sha256:08d105a49576a9e629f53a710f0009c4bf0a1d8a3239a74e41d0944f26e28a61 \ diff --git a/rocky/requirements.txt b/rocky/requirements.txt index 185f7600073..d371f40d46e 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -1,47 +1,30 @@ -annotated-types==0.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f -arabic-reshaper==3.0.0 ; python_version >= "3.8" and python_version < "4.0" \ +arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 -ares==0.7.1 ; python_version >= "3.8" and python_version < "4.0" \ +ares==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:28823cad841c96f0a5f26452eaddf5831be8363f3128cd5b1403bf70bcb87965 -asgiref==3.7.2 ; python_version >= "3.8" and python_version < "4.0" \ +asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -asn1crypto==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +asn1crypto==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 -attrs==23.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 -backoff==2.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -backports-zoneinfo==0.2.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf \ - --hash=sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328 \ - --hash=sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546 \ - --hash=sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6 \ - --hash=sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570 \ - --hash=sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9 \ - --hash=sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7 \ - --hash=sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987 \ - --hash=sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722 \ - --hash=sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582 \ - --hash=sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc \ - --hash=sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b \ - --hash=sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1 \ - --hash=sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08 \ - --hash=sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac \ - --hash=sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2 -beautifulsoup4==4.12.3 ; python_version >= "3.8" and python_version < "4.0" \ +beautifulsoup4==4.12.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051 \ --hash=sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed -brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +brotli==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03d20af184290887bdea3f0f78c4f737d126c74dc2f3ccadf07e54ceca3bf208 \ --hash=sha256:0541e747cce78e24ea12d69176f6a7ddb690e62c425e01d31cc065e69ce55b48 \ --hash=sha256:069a121ac97412d1fe506da790b3e69f52254b9df4eb665cd42460c837193354 \ @@ -125,7 +108,7 @@ brotli==1.1.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fce1473f3ccc4187f75b4690cfc922628aed4d3dd013d047f95a9b3919a86596 \ --hash=sha256:fd5f17ff8f14003595ab414e45fce13d073e0762394f957182e69035c9f3d7c2 \ --hash=sha256:fdc3ff3bfccdc6b9cc7c342c03aa2400683f0cb891d46e94b64a197910dc4064 -brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_version >= "3.8" and python_version < "4.0" \ +brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b \ --hash=sha256:1a807d760763e398bbf2c6394ae9da5815901aa93ee0a37bca5efe78d4ee3171 \ --hash=sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb \ @@ -153,10 +136,10 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.11.17 ; python_version >= "3.8" and python_version < "4.0" \ +certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 -cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ --hash=sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417 \ @@ -209,10 +192,10 @@ cffi==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -chardet==5.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +chardet==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 -charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ +charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ --hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \ @@ -303,13 +286,13 @@ charset-normalizer==3.3.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \ --hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \ --hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561 -click==8.1.7 ; python_version >= "3.8" and python_version < "4.0" \ +click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.8" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ @@ -342,63 +325,63 @@ cryptography==42.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -cssselect2==0.7.0 ; python_version >= "3.8" and python_version < "4.0" \ +cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 -cwe==1.6 ; python_version >= "3.8" and python_version < "4.0" \ +cwe==1.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:bad040864f52ccd494763d317eb77e7c604ce323b3a17164d43a97fea4ebb9e8 \ --hash=sha256:eed7fdbe3565f975bb9ec6cef6f42cb4eb721ec6155fa954f3b1b106351d981e -deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ +deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 -django-appconf==1.0.6 ; python_version >= "3.8" and python_version < "4.0" \ +django-appconf==1.0.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993 \ --hash=sha256:cfe87ea827c4ee04b9a70fab90b86d704cb02f2981f89da8423cb0fabf88efbf -django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.8" and python_version < "4.0" -django-csp==3.7 ; python_version >= "3.8" and python_version < "4.0" \ +django-compressor @ git+https://github.com/dekkers/django-compressor@620bc0ab86590f8981dd24456a70951c9bdbf91f ; python_version >= "3.10" and python_version < "4.0" +django-csp==3.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01443a07723f9a479d498bd7bb63571aaa771e690f64bde515db6cdb76e8041a \ --hash=sha256:01eda02ad3f10261c74131cdc0b5a6a62b7c7ad4fd017fbefb7a14776e0a9727 -django-environ==0.11.2 ; python_version >= "3.8" and python_version < "4" \ +django-environ==0.11.2 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:0ff95ab4344bfeff693836aa978e6840abef2e2f1145adff7735892711590c05 \ --hash=sha256:f32a87aa0899894c27d4e1776fa6b477e8164ed7f6b3e410a62a6d72caaf64be -django-formtools==2.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +django-formtools==2.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:47cb34552c6efca088863d693284d04fc36eaaf350eb21e1a1d935e0df523c93 \ --hash=sha256:bce9b64eda52cc1eef6961cc649cf75aacd1a707c2fff08d6c3efcbc8e7e761a -django-otp==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +django-otp==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5277731bc05b6cdbf96aa84ac46018e30ed5fb248086053b0146f925de059060 \ --hash=sha256:8f4156a3c14ce2aaa31379385eadf388925cd50fc4b5d20a3b944f454c98ff7c -django-password-validators==1.7.3 ; python_version >= "3.8" and python_version < "4.0" \ +django-password-validators==1.7.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7175aefa6e86dc002dd3539327bf2d752097651704927dc409a669259e0d2195 \ --hash=sha256:f243a82957e9b17a0c7cf5580f9d7588471cb6530c2dce7ee4e1222dddfe5768 -django-phonenumber-field==6.4.0 ; python_version >= "3.8" and python_version < "4.0" \ +django-phonenumber-field==6.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:72a3e7a3e7493bf2a12c07a3bc77ce89813acc16592bf04d0eee3b5a452097ed \ --hash=sha256:a31b4f05ac0ff898661516c84940f83adb5cdcf0ae4b9b1d31bb8ad3ff345b58 -django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc4b9718e22d5acd6cf1301a1036b9 ; python_version >= "3.8" and python_version < "4.0" -django-tagulous==1.3.3 ; python_version >= "3.8" and python_version < "4.0" \ +django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc4b9718e22d5acd6cf1301a1036b9 ; python_version >= "3.10" and python_version < "4.0" +django-tagulous==1.3.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.5 ; python_version >= "3.8" and python_version < "4.0" \ +django-two-factor-auth==1.15.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 -django-weasyprint==2.2.2 ; python_version >= "3.8" and python_version < "4.0" \ +django-weasyprint==2.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a -django==4.2.10 ; python_version >= "3.8" and python_version < "4.0" \ +django==4.2.10 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2d4c4d4ea0b6f0895acde632071aff6400bfc331228fc978b05452a0ff3e9f1 \ --hash=sha256:b1260ed381b10a11753c73444408e19869f3241fc45c985cd55a30177c789d13 -djangorestframework==3.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ +dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 -drf-standardized-errors==0.12.6 ; python_version >= "3.8" and python_version < "4.0" \ +drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d -exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ +exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ +fonttools[woff]==4.47.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ @@ -441,10 +424,10 @@ fonttools[woff]==4.47.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 -googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ +googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +granian==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ @@ -502,7 +485,7 @@ granian==1.0.2 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 -grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ +grpcio==1.56.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ --hash=sha256:0409de787ebbf08c9d2bca2bcc7762c1efe72eada164af78b50567a8dfc7253c \ @@ -548,25 +531,22 @@ grpcio==1.56.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f92a99ab0c7772fb6859bf2e4f44ad30088d18f7c67b83205297bfb229e0d2cf \ --hash=sha256:fb34ace11419f1ae321c36ccaa18d81cd3f20728cd191250be42949d6845bb2d \ --hash=sha256:fdc3a895791af4addbb826808d4c9c35917c59bb5c430d729f44224e51c92d61 -html5lib==1.1 ; python_version >= "3.8" and python_version < "4.0" \ +html5lib==1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f -idna==3.6 ; python_version >= "3.8" and python_version < "4.0" \ +idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -importlib-metadata==6.11.0 ; python_version >= "3.8" and python_version < "4.0" \ +importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.1 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a \ - --hash=sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6 -jsonschema-specifications==2023.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c -jsonschema==4.21.1 ; python_version >= "3.8" and python_version < "4.0" \ +jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ +lxml==4.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ @@ -660,58 +640,58 @@ lxml==4.9.4 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b -opentelemetry-api==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 -opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-common==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:dd63209b40702636ab6ae76a06b401b646ad7b008a906ecb41222d4af24fbdef \ --hash=sha256:df60c681bd61812e50b3a39a7a1afeeb6d4066117583249fcc262269374e7a49 -opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-exporter-otlp-proto-grpc==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6c06d43c3771bda1795226e327722b4b980fa1ca1ec9e985f2ef3e29795bdd52 \ --hash=sha256:7c3f066065891b56348ba2c7f9df6ec635a712841cae0a36f2f6a81642ae7dec -opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-asgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:46084195fb9c50507abbe1dd490ae4c31c8658c5790f1ddf7af95c417dbe6422 \ --hash=sha256:921244138b37a9a25edf2153f1c248f16f98610ee8d840b25fd7bf6b165e4d72 -opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-dbapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:53a3925eb7e8e89cff45fb90a15c5fb520fc75f934dee36f315af24f1bf25701 \ --hash=sha256:b34cf3d9c3e7dd0a4ca6a75913a8cebe54b5b977464db4371ed00da48f9040e6 -opentelemetry-instrumentation-django==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-django==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3942e54d0cd5f220ff299b8e84b5fb42c9c43d2a8e0bad2cbb47722147a1bc3d \ --hash=sha256:96fb8169a7ed1e5cc1a26b00b9c6556af4b5f11ad6ea69df0e3bd76813baa8e3 -opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-fastapi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5990368e99ecc989df0a248a0b9b8e85d8b3eb7c1dbf5131c36982ba7f4a43b7 \ --hash=sha256:eb4ceefe8b944fc9ea5e61fa558b99afd1285431b563f3f0104ac177cde4dfe5 -opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-psycopg2==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d6852e568f7e8750abf4cf49f1cab09dcf6f49ef9b2ab820a091c679d710c2a \ --hash=sha256:94b511b752fc4d12d4c473cda2218a42248ac3a5a9b3d4ac2d5e247537fa7785 -opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-requests==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:687fde31111669e729054e64d246c96b0b9d4d8702bd0e3569b7660bdb528d71 \ --hash=sha256:bdc5515ae7533e620b312fd989941b7c2c92d492a2d4418f6ef8db5d7422fa64 -opentelemetry-instrumentation-wsgi==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation-wsgi==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0095834dda60f876c7ed00bc16292b40db86f8cfebdf251417adbd9810993644 \ --hash=sha256:4c689d59f8e33d2c7a990e475b7934baca554f35684adc346f0882d974c7dc2d -opentelemetry-instrumentation==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-instrumentation==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ef9e5705ceca0205992a4a845ae4251ce6ec15a1206ca07c2b00afb0c5bd386 \ --hash=sha256:214382ba10dfd29d4e24898a4c7ef18b7368178a6277a1aec95cdb75cabf4612 -opentelemetry-proto==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-proto==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:512c3d2c6864fb7547a69577c3907348e6c985b7a204533563cb4c4c5046203b \ --hash=sha256:cf01f49b3072ee57468bccb1a4f93bdb55411f4512d0ac3f97c5c04c0040b5a2 -opentelemetry-sdk==1.20.0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-sdk==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:702e432a457fa717fd2ddfd30640180e69938f85bb7fec3e479f85f61c1843f8 \ --hash=sha256:f2230c276ff4c63ea09b3cb2e2ac6b1265f90af64e8d16bbf275c81a9ce8e804 -opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ce5b040b8a3fc816ea5879a743b3d6fe5db61f6485e4def94c6ee4d402e1eb7 \ --hash=sha256:45404391ed9e50998183a4925ad1b497c01c143f06500c3b9c3d0013492bb0f2 -opentelemetry-util-http==0.41b0 ; python_version >= "3.8" and python_version < "4.0" \ +opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -oscrypto==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +oscrypto==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 -phonenumbers==8.13.29 ; python_version >= "3.8" and python_version < "4.0" \ +phonenumbers==8.13.29 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf -pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ +pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ --hash=sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac \ @@ -780,10 +760,7 @@ pillow==10.2.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 -pkgutil-resolve-name==1.3.10 ; python_version >= "3.8" and python_version < "3.9" \ - --hash=sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174 \ - --hash=sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e -protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ +protobuf==4.23.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0149053336a466e3e0b040e54d0b615fc71de86da66791c592cc3c8d18150bf8 \ --hash=sha256:08fe19d267608d438aa37019236db02b306e33f6b9902c3163838b8e75970223 \ --hash=sha256:29660574cd769f2324a57fb78127cda59327eb6664381ecfe1c69731b83e8288 \ @@ -797,7 +774,7 @@ protobuf==4.23.3 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:84ea0bd90c2fdd70ddd9f3d3fc0197cc24ecec1345856c2b5ba70e4d99815359 \ --hash=sha256:aca6e86a08c5c5962f55eac9b5bd6fce6ed98645d77e8bfc2b952ecd4a8e4f6a \ --hash=sha256:cc14358a8742c4e06b1bfe4be1afbdf5c9f6bd094dff3e14edb78a1513893ff5 -psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ +psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ --hash=sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3 \ @@ -811,10 +788,10 @@ psycopg2==2.9.9 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pycparser==2.21 ; python_version >= "3.8" and python_version < "4.0" \ +pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ @@ -894,43 +871,43 @@ pydantic-core==2.16.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pydyf==0.8.0 ; python_version >= "3.8" and python_version < "4.0" \ +pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a -pyhanko-certvalidator==0.26.3 ; python_version >= "3.8" and python_version < "4.0" \ +pyhanko-certvalidator==0.26.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 -pyhanko==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyhanko==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 -pyparsing==3.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==4.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pypdf==4.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a -pyphen==0.14.0 ; python_version >= "3.8" and python_version < "4.0" \ +pyphen==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa -pypng==0.20220715.0 ; python_version >= "3.8" and python_version < "4.0" \ +pypng==0.20220715.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c \ --hash=sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1 -python-bidi==0.4.2 ; python_version >= "3.8" and python_version < "4.0" \ +python-bidi==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e -python-dotenv==1.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pytz==2023.4 ; python_version >= "3.8" and python_version < "4.0" \ +pytz==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a -pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ +pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ @@ -981,10 +958,10 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f -qrcode==7.4.2 ; python_version >= "3.8" and python_version < "4.0" \ +qrcode==7.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a \ --hash=sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845 -rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ +rcssmin==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:271e3d2f8614a6d4637ed8fff3d90007f03e2a654cd9444f37d888797662ba72 \ --hash=sha256:35da6a6999e9e2c5b0e691b42ed56cc479373e0ecab33ef5277dfecce625e44a \ --hash=sha256:42576d95dfad53d77df2e68dfdec95b89b10fad320f241f1af3ca1438578254a \ @@ -1008,10 +985,10 @@ rcssmin==1.1.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ee386bec6d62f8c814d65c011d604a7c82d24aa3f718facd66e850eea8d6a5a1 \ --hash=sha256:f15673e97f0a68b4c378c4d15b088fe96d60bc106d278c88829923118833c20f \ --hash=sha256:f7a1fcdbafaacac0530da04edca4a44303baab430ea42e7d59aece4b3f3e9a51 -referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ +referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ +reportlab==3.6.13 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ --hash=sha256:149718c3eaee937f28094325f0dd9ae1add3172c2dacbb93ff5403f37c9d3c57 \ @@ -1057,10 +1034,10 @@ reportlab==3.6.13 ; python_version >= "3.8" and python_version < "4" \ --hash=sha256:f1993a68c0edc45895d3df350d01b0456efe79aaf309cef777762742be501f2a \ --hash=sha256:faeebde62f0f6ad86985bec5685411260393d2eb7ba907972da56af586b644e8 \ --hash=sha256:ff09a0a1e5cef05309ac09dfc5185e8151d927bcf45470d2f540c96260f8a355 -requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ +requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +rjsmin==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:113132a40ce7d03b2ced4fac215f0297338ed1c207394b739266efab7831988b \ --hash=sha256:122aa52bcf7ad9f12728d309012d1308c6ecfe4d6b09ea867a110dcad7b7728c \ --hash=sha256:145c6af8df42d8af102d0d39a6de2e5fa66aef9e38947cfb9d65377d1b9940b2 \ @@ -1084,7 +1061,7 @@ rjsmin==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3 \ --hash=sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807 \ --hash=sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65 -rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ +rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ @@ -1184,51 +1161,51 @@ rpds-py==0.17.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==69.0.3 ; python_version >= "3.8" and python_version < "4.0" \ +setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 -six==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ +sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ +soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 -sqlparse==0.4.4 ; python_version >= "3.8" and python_version < "4.0" \ +sqlparse==0.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3 \ --hash=sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c -strenum==0.4.15 ; python_version >= "3.8" and python_version < "4.0" \ +strenum==0.4.15 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff \ --hash=sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659 -svglib==1.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +svglib==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587 -tinycss2==1.2.1 ; python_version >= "3.8" and python_version < "4.0" \ +tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 -toolz==0.12.1 ; python_version >= "3.8" and python_version < "4.0" \ +toolz==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d -typer==0.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee -typing-extensions==4.9.0 ; python_version >= "3.8" and python_version < "4.0" \ +typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.8" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ +tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -tzlocal==5.2 ; python_version >= "3.8" and python_version < "4.0" \ +tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e -uritools==4.0.2 ; python_version >= "3.8" and python_version < "4.0" \ +uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e -urllib3==2.1.0 ; python_version >= "3.8" and python_version < "4.0" \ +urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 -uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.8" and python_version < "4.0" \ +uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ --hash=sha256:1f354d669586fca96a9a688c585b6257706d216177ac457c92e15709acaece10 \ @@ -1265,7 +1242,7 @@ uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == " --hash=sha256:ed3c28337d2fefc0bac5705b9c66b2702dc392f2e9a69badb1d606e7e7f773bb \ --hash=sha256:edbb4de38535f42f020da1e3ae7c60f2f65402d027a08a8c60dc8569464873a6 \ --hash=sha256:f3b18663efe0012bc4c315f1b64020e44596f5fabc281f5b0d9bc9465288559c -watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ +watchfiles==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc \ --hash=sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365 \ --hash=sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0 \ @@ -1341,16 +1318,16 @@ watchfiles==0.21.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d -weasyprint==60.2 ; python_version >= "3.8" and python_version < "4.0" \ +weasyprint==60.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 -webencodings==0.5.1 ; python_version >= "3.8" and python_version < "4.0" \ +webencodings==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 -whitenoise[brotli]==6.6.0 ; python_version >= "3.8" and python_version < "4.0" \ +whitenoise[brotli]==6.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251 \ --hash=sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146 -wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ +wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc \ --hash=sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81 \ --hash=sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09 \ @@ -1421,12 +1398,12 @@ wrapt==1.16.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xhtml2pdf==0.2.11 ; python_version >= "3.8" and python_version < "4.0" \ +xhtml2pdf==0.2.11 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 -zipp==3.17.0 ; python_version >= "3.8" and python_version < "4.0" \ +zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 -zopfli==0.2.3 ; python_version >= "3.8" and python_version < "4.0" \ +zopfli==0.2.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0574372283befa5af98fb31407e1fe6822f2f9c437ef69e7fa260e49022d8a65 \ --hash=sha256:082f030b2b7d6d4597ac517816e499c63b92130aa8f4f74a3788ebaa5770f974 \ --hash=sha256:08d105a49576a9e629f53a710f0009c4bf0a1d8a3239a74e41d0944f26e28a61 \ From 92e6f0934bdf41d29ebfe356397c021f1c633782 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Mon, 12 Feb 2024 15:08:12 +0100 Subject: [PATCH 34/85] Update scheduler architecture documentation (#2387) Co-authored-by: Jan Klopper --- .pre-commit-config.yaml | 2 + docs/source/developer_documentation/mula.md | 31 +- mula/docs/architecture.md | 795 ++++++++------------ mula/docs/img/diagram001.svg | 4 + mula/docs/img/diagram002.svg | 4 + mula/docs/img/diagram003.svg | 4 + mula/docs/img/diagram004.svg | 4 + mula/docs/img/diagram005.svg | 4 + mula/docs/img/diagram006.svg | 4 + mula/docs/img/diagram007.svg | 4 + mula/docs/img/diagram008.svg | 4 + mula/docs/img/diagram009.svg | 4 + mula/docs/img/diagram010.svg | 4 + mula/docs/img/schematic-drawing.svg | 4 + mula/scheduler/app.py | 1 - 15 files changed, 392 insertions(+), 481 deletions(-) create mode 100644 mula/docs/img/diagram001.svg create mode 100644 mula/docs/img/diagram002.svg create mode 100644 mula/docs/img/diagram003.svg create mode 100644 mula/docs/img/diagram004.svg create mode 100644 mula/docs/img/diagram005.svg create mode 100644 mula/docs/img/diagram006.svg create mode 100644 mula/docs/img/diagram007.svg create mode 100644 mula/docs/img/diagram008.svg create mode 100644 mula/docs/img/diagram009.svg create mode 100644 mula/docs/img/diagram010.svg create mode 100644 mula/docs/img/schematic-drawing.svg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 649b7bab088..b6f65905dba 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -20,6 +20,7 @@ repos: - id: end-of-file-fixer exclude: | (?x)( + \.svcg$ | ^boefjes/tests/examples/rdns-nxdomain.txt$ ) @@ -87,6 +88,7 @@ repos: (?x)( \.po$ | \.xml$ | + \.svg$ | poetry.lock$ | pyproject.toml$ | requirements-.*.txt$ | diff --git a/docs/source/developer_documentation/mula.md b/docs/source/developer_documentation/mula.md index cc29cd1b6d7..9005e197a52 100644 --- a/docs/source/developer_documentation/mula.md +++ b/docs/source/developer_documentation/mula.md @@ -20,23 +20,23 @@ rankers. ### Stack, packages and libraries -| Name | Version | Description | -|----------------|----------|----------------------------------------------------| -| Python | ^3.8 | | -| FastAPI | ^0.93.0 | Used for api server | -| SQLAlchemy | ^1.4.48 | | +| Name | Version | Description | +| ---------- | -------- | ------------------- | +| Python | ^3.8 | | +| FastAPI | ^0.109.0 | Used for api server | +| SQLAlchemy | ^2.0.23 | | +| pydantic | ^2.5.2 | | ### External services The scheduler interfaces with the following services: -| Service | Usage | -|-------------|--------------------------------------------------------------------------| -| [Octopoes] | Retrieving random OOI's of organizations | -| [Katalogus] | Used for referencing available plugins and organizations | -| [Bytes] | Retrieve last run boefje for organization and OOI | -| [Boefjes] | Sending boefje, and normalizer tasks to Celery | -| [RabbitMQ] | Used for retrieving scan profile changes, and created raw data in bytes | +| Service | Usage | +| ----------- | ----------------------------------------------------------------------- | +| [Octopoes] | Retrieving random OOI's of organizations | +| [Katalogus] | Used for referencing available plugins and organizations | +| [Bytes] | Retrieve last run boefje for organization and OOI | +| [RabbitMQ] | Used for retrieving scan profile changes, and created raw data in bytes | ### Project structure @@ -54,9 +54,9 @@ $ tree -L 3 --dirsfirst │   ├── models/ # internal model definitions │   ├── queues/ # priority queue │   ├── rankers/ # priority/score calculations -│   ├── repositories/ # data abstraction layer +│   ├── storage/ # data abstraction layer │   ├── schedulers/ # schedulers -│   ├── server/ # scheduler rest api interface +│   ├── server/ # http rest api server │   ├── utils/ # common utility functions │   ├── __init__.py │   ├── __main__.py @@ -65,8 +65,11 @@ $ tree -L 3 --dirsfirst └─── tests/    ├── factories/    ├── integration/ +    ├── mocks/ +    ├── scripts/    ├── simulation/    ├── unit/ +    ├── utils/    └── __init__.py ``` diff --git a/mula/docs/architecture.md b/mula/docs/architecture.md index fe60fd42e85..81f7d9fd1ca 100644 --- a/mula/docs/architecture.md +++ b/mula/docs/architecture.md @@ -2,12 +2,12 @@ ## Purpose -The *scheduler* is tasked with populating and maintaining a priority queue of +The _scheduler_ is tasked with populating and maintaining a priority queue of items that are ranked, and can be popped off through HTTP API calls. The scheduler is designed to be extensible, such that you're able to create your own rules for the population, and prioritization of tasks. -The *scheduler* implements a priority queue for prioritization of tasks to be +The _scheduler_ implements a priority queue for prioritization of tasks to be performed by the worker(s). In the implementation of the scheduler within KAT the scheduler is tasked with populating the priority queue with 'boefje' and 'normalizer' tasks. Additionally the scheduler is responsible for maintaining @@ -16,587 +16,408 @@ and updating its internal priority queue. A priority queue is used, in as such, that it allows us to determine what tasks should be picked up first, or more regularly. Because of the use of a priority queue we can differentiate between tasks that are to be executed first, e.g. -tasks created by the user get precedence over jobs that are created by the +tasks created by the user get precedence over tasks that are created by the internal rescheduling processes within the scheduler. -Calculations in order to determine the priority of a task is performed by the -`ranker` that leverages information from multiple (external) sources, -called `connectors`. +Calculations in order to determine the priority of a task are performed by the +`ranker`. The `ranker` can leverage information from multiple (external) +sources, called `connectors`. In this document we will outline how the scheduler operates within KAT, how -iternal systems function and how external services use it. +internal systems function and how external services use it. -### Architecture / Design +## Architecture / Design In order to get a better overview of how the scheduler is implemented we will be using the [C4 model](https://c4model.com/) to give an overview of the scheduler system with their respective level of abstraction. -#### C2 Container level: +### C2 Container level First we'll review how the `Scheduler` system interacts and sits in between its external services. In this overview arrows from external services indicate how and why those services communicate with the scheduler. The `Scheduler` system combines data from the `Octopoes`, `Katalogus`, `Bytes` and `RabbitMQ` systems. -```mermaid -graph TB - - Rocky["Rocky
    [webapp]"] - Octopoes["Octopoes
    [graph database]"] - Katalogus["Katalogus
    [software system]"] - Bytes["Bytes
    [software system]"] - RabbitMQ["RabbitMQ
    [message broker]"] - Scheduler["Scheduler
    [system]"] - TaskRunner["Task Runner
    [software system]"] +![diagram001](./img/diagram001.svg) - Rocky--"Create object"-->Octopoes - Rocky--"Create scan job
    HTTP POST"--->Scheduler +- Octopoes - Octopoes--"Get random oois
    HTTP GET"-->Scheduler +- RabbitMQ - RabbitMQ--"Get latest created oois
    Get latest raw files
    AMQP"-->Scheduler +- Katalogus - Katalogus--"Get available plugins
    HTTP GET"-->Scheduler - Bytes--"Get last run boefje
    HTTP GET"-->Scheduler +- Bytes - Scheduler--"Pop task of queue"-->TaskRunner -``` +### C3 Component level When we take a closer look at the `scheduler` system itself we can identify several components. The 'Scheduler App' directs the creation and maintenance of a multitude of schedulers. Typically in a KAT installation 2 scheduler will -be created per organisation: a boefje scheduler and a normalizer scheduler. - -Each scheduler can implement it's own way of populating, and prioritization of -its queue. The associated queues of a individual scheduler is persisted in -a SQL database. +be created per organisation: a _boefje scheduler_ and a _normalizer scheduler_. -#### C3 Component level: - -... - -```mermaid -C4Component - title Component diagram for Scheduler - - ContainerDb(db, "Database", "Postgresql Database", "") - - Container_Boundary(scheduler_app, "Scheduler App") { - Container_Boundary(organisation_a, "Organisation A") { - Component(boefje_scheduler_a, "Boefje Scheduler Org A", "Scheduler", "") - Component(normalizer_scheduler_a, "Normalizer Scheduler Org A", "Scheduler", "") - } - - Container_Boundary(organisation_b, "Organisation B") { - Component(boefje_scheduler_b, "Boefje Scheduler Org B", "Scheduler", "") - Component(normalizer_scheduler_b, "Normalizer Scheduler Org B", "Scheduler", "") - } - - Component(server, "Server", "REST API") - } -``` +![diagram002](./img/diagram002.svg) -A more complete overview of the different components within the scheduler: +Each scheduler type implements it's own priority queue, and can implement it's own +way of populating, and prioritization of its queue. The associated queues of an +individual scheduler is persisted in a SQL database. -```mermaid -C4Component - title Component diagram for Scheduler +Interaction with the scheduler and access to the internals of the 'Scheduler +App' can be accessed by the `Server` which implements a HTTP REST API interface. - SystemQueue_Ext(rabbitmq_scan_profile_mutations, "RabbitMQ", "scan_profile_mutations") - SystemQueue_Ext(rabbitmq_raw_file_received, "RabbitMQ", "raw_file_received") +## Dataflows - System_Ext("katalogus", "Katalogus", "...") - System_Ext("rocky", "Rocky", "...") - System_Ext("bytes", "Bytes", "...") - System_Ext("octopoes", "Octopoes", "...") +Within a KAT implementation of the scheduler we can identify several dataflows +of how tasks are created and pushed onto the priority queue. In the following +section we review how different dataflows, from the `boefjes` and the +`normalizers` schedulers are implemented within the `Scheduler` system. - Container_Boundary("scheduler_app", "Scheduler App") { +### `BoefjeScheduler` - %% ContainerDb(pq_store, "Priority Queue Store", "postgresql DatabaseTable", "...") +#### Design - Container_Boundary(boefje_scheduler, "Boefje Scheduler", "Scheduler") { - Component("scan_profile_mutations", "Scan Profile Mutations", "Thread", "...") - Component("new_boefjes", "New Boefjes", "Thread", "...") - Component("random_objects", "Random Objects", "Thread", "...") +First, we will use the `BoefjeScheduler` as an example. A `BoefjeScheduler` is +tasked with creating tasks that are able to be picked up and processed by a +'Task Runner'. The scheduler creates a `BoefjeTask` to the specification that +the 'Task Runner' can interpret, namely in this instance of a `BoefjeTask`. - Component("push_task_boefje", "Push Task", "Method") +![diagram003](./img/diagram003.svg) - SystemQueue(priority_queue_boefje, "PriorityQueue", "Persisted in a postgresql database table") - } +The scheduler wraps this `BoefjeTask` within a `PrioritizedItem` (`p_item`), +this is done such that we can push the task on the queue and add extra +information to this `PrioritizedItem`, like its priority. We uniquely identify +a task that is contained within the `PrioritizedItem` by its hash. - Container_Boundary(normalizer_scheduler, "Normalizer Scheduler", "Scheduler") { - Component("raw_file_received", "Raw File Received", "Thread", "...") +![diagram004](./img/diagram004.svg) - Component("push_task_normalizer", "Push Task", "Method") +By doing this, it allows the scheduler to wrap whatever object within a +`PrioritizedItem`, and as a result we're able to create and extend more types +of schedulers that are not specifically bound to a type. Additionally this +allows us to persist its items to a database and makes it so that the queue can +be interchanged with a different technology if so desired. - SystemQueue(priority_queue_normalizer, "PriorityQueue", "Persisted in a postgresql database table") - } +And we want to uniquely identify a task because we want to make sure that the +same tasks are not being pushed on the queue (de-duplication), or that they are +being rescheduled too quickly (grace-period). For example with a `BoefjeTask` +we unique identify a task by hashing the values of: the ooi, the boefje id, and +the organization id. So for a `PrioritizedItem` we know what specific +`BoefjeTask` it contains by this hash. - Container_Boundary(server, "Server", "REST API") { - Component("api_tasks", "/tasks", "...") - Component("api_queues_push", "/queues/{id}/push", "...") - Component("api_queues_pop", "/queues/{id}/pop", "...") - } +Before a `BoefjeTask` is wrapped by a `PrioritizedItem`, and pushed on the queue +we will check the following: - ContainerDb(task_store, "Task Store", "postgresql Database Table", "Persisted in a postgresql database table") - } +- `is_task_allowed_to_run()` - %% Boefje Scheduler - Rel(scan_profile_mutations, rabbitmq_scan_profile_mutations, "AMQP", "...") - Rel(scan_profile_mutations, push_task_boefje, "", "...") - UpdateRelStyle(scan_profile_mutations, rabbitmq_scan_profile_mutations, $offsetX="-50") + - is boefje enabled + - are scan levels between boefje and ooi correct - Rel(new_boefjes, katalogus, "HTTP", "...") - Rel(new_boefjes, push_task_boefje, "", "...") - UpdateRelStyle(new_boefjes, katalogus, $offsetX="10") +- `is_task_running()` - Rel(random_objects, octopoes, "HTTP", "...") - Rel(random_objects, push_task_boefje, "", "...") - UpdateRelStyle(new_boefjes, katalogus, $offsetX="60") + - is task still running according to the datastore (`TaskStore`)? + - is task still running according to Bytes? - Rel(push_task_boefje, priority_queue_boefje, "push to queue", "...") - Rel(push_task_boefje, task_store, "post push", "...") +- `has_grace_period_passed()` - %% Normalizer Scheduler - Rel(raw_file_received, rabbitmq_raw_file_received, "AMQP", "...") - Rel(raw_file_received, push_task_normalizer, "", "...") + - has the grace period passed according to the datastore (`TaskStore`)? + - has the grace period passed according to Bytes? - Rel(push_task_normalizer, bytes, "", "") - Rel(push_task_normalizer, priority_queue_normalizer, "push to queue", "...") - Rel(push_task_normalizer, task_store, "post push", "...") +- `is_task_stalled()` - %% Server - Rel(priority_queue_boefje, api_queues_pop, "pop", "") - Rel(api_queues_push, priority_queue_boefje, "push", "") - Rel(priority_queue_normalizer, api_queues_pop, "pop", "") - Rel(api_queues_push, priority_queue_normalizer, "push", "") - Rel(task_store, api_tasks, "GET", "") + - is task status still `DISPATCHED` for longer than the grace-period? - %% Rocky - Rel(rocky, api_queues_push, "POST", "") - Rel(rocky, api_queues_pop, "GET", "") - Rel(rocky, api_tasks, "GET", "") +- `is_item_on_queue_by_hash()` - UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="2") -``` + - check if the same task is already on the priority queue -#### Dataflows +Important to note is that when a `BoefjeTask` is created and pushed onto the +queue as a `PrioritizedItem` a new unique `TaskRun` is generated.[^1] This +ensures that each task has its own dedicated `TaskRun` throughout its entire +lifecycle. This approach maintains a distinct record for each task, providing +an accurate and independent history of task statuses. This means that each +execution of a `BoefjeTask`, regardless of whether it's the same task being +repeated in the future, is tracked independently with its own unique `TaskRun`. -Following we review how different dataflows, from the `boefjes` and the -`normalizers` are implemented within the `Scheduler` system. The following -events within a KAT installation will trigger dataflows in the `Scheduler`. -With the current implementation of the scheduler we identify the creation of -two different type of jobs, `boefje` and `normalizer` jobs. +This approach ensures that the historical record of each task's execution is +distinct, providing a clear and isolated view of each instance of the task's +lifecycle. This strategy enables maintaining accurate and unambiguous +monitoring and logging of task executions over time. Additionally it enables us +an overview and insights of what tasks have been created in the past and what +tasks are currently running. You might know this overview from Rocky as the +task list. -A graphical representation of task creation dataflows: +![diagram005](./img/diagram005.svg) -```mermaid -flowchart LR - rmq_scan_profile([scan profile mutations]) - rmq_raw_file([raw file received]) +Whenever a task is created in the scheduler it flows through the system, to +keep track of the status of this task throughout the system we update its +`TaskRun` reference. - subgraph mula - subgraph boefje scheduler organisation 1 +- When a `BoefjeTask` has been created by the scheduler it is packaged within + its `PrioritizedItem` and it will get the status of `PENDING` (1) meaning a + task has been created but it hasn't been queued yet. - pq_boefjes(priority queue boefjes) +- When the `PrioritizedItem` is pushed onto the queue the `TaskRun` will get a + status update and will get the status of `QUEUED` (2). - subgraph threads_boefje["threads"] - thread_scan_profile[[scan profile mutations]] - thread_enabled_boefjes[[enabled boefjes]] - thread_random_objects[[random objects]] - end +- When the 'Task Runner' picks up the task by popping the `PrioritizedItem` + from the queue the `TaskRun` status will be updated to `DISPATCHED` (3). - ranker_boefje{{ranker}} +- The 'Task Runner' is now able to start executing the `BoefjeTask` that was + contained in the `PrioritizedItem` and the status of the `TaskRun` will be + updated to `RUNNING` (4). - end +- Whenever the task has been completed the 'Task Runner' will update the + `TaskRun` status by either setting the status to `COMPLETED`, `FAILED` or + `CANCELLED`. (5) - thread_scan_profile-->ranker_boefje - thread_enabled_boefjes-->ranker_boefje - thread_random_objects-->ranker_boefje - ranker_boefje-->pq_boefjes +#### Processes - subgraph normalizer scheduler organisation 1 +In order to create a `BoefjeTask` and trigger the dataflow we described above +we have 4 different processes within a `BoefjeScheduler` that can create boefje +tasks. Namely: - pq_normalizer(priority queue normalizer) +1. scan profile mutations +2. enabling of boefjes +3. rescheduling of prior tasks +4. manual scan job - subgraph threads_normalizer["threads"] - thread_raw_file_received[[raw file received]] - end +![diagram006](./img/diagram006.svg) - ranker_normalizer{{ranker}} - end +##### 1. Scan profile mutations - thread_raw_file_received-->ranker_normalizer - ranker_normalizer-->pq_normalizer +![diagram007](./img/diagram007.svg) - subgraph server - end +When a scan level is increased on an OOI +(`schedulers.boefje.push_tasks_for_scan_profile_mutations`) a message is pushed +on the RabbitMQ `{organization_id}__scan_profile_mutations` queue. The scheduler +continuously check if new messages are posted on the queue. The resulting tasks +from this process will get the second highest priority of 2 on the queue. - pq_boefjes<-->server - pq_normalizer<-->server - end +The dataflow is as follows: - rmq_scan_profile-->thread_scan_profile - rmq_raw_file-->thread_raw_file_received +- When scan level mutation occurred, the `Scheduler` system will get the scan + profile mutation from the `RabbitMQ` system. -style thread_scan_profile stroke-dasharray: 5 5 -style thread_enabled_boefjes stroke-dasharray: 5 5 -style thread_random_objects stroke-dasharray: 5 5 -style thread_raw_file_received stroke-dasharray: 5 5 -``` +- For the associated OOI of this scan profile mutation, the `Scheduler` system + will get the enabled boefjes for this OOI. (`tasks = ooi * boefjes`) -##### Boefje scheduler +- For each enabled boefje, a `BoefjeTask` will be created and added to the + `PriorityQueue` of the `BoefjeScheduler`. A `BoefjeTask` is an object with + the correct specification for the task runner to execute a boefje. -For a `boefje` scheduler the following events will trigger a dataflow procedure -to be executed and subsequently the creation of a `boefje` task.: +- The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to the + queue. The `PrioritizedItem` will contain the created `BoefjeTask`. -1. scan level mutation of an ooi (object or object-of-interest) -2. new and/or enabled boefje -3. rescheduling of ooi's and associated boefjes -4. scan job creation from rocky +- A `TaskRun` reference to the task is created to keep track of the status + of the task (`post_push`). -**1. Scan level mutation** +##### 2. Enabling of boefjes -When a scan level is increased on an OOI -(`schedulers.boefje.push_tasks_for_scan_profile_mutations`), this will get the -priority of 2. +![diagram008](./img/diagram008.svg) -* When scan level mutation occurred, the `Scheduler` system will get the - scan profile mutation from the `RabbitMQ` system. +When a plugin of type `boefje` is enabled or disabled in Rocky. The dataflow is +triggered when the plugin cache of an organisation is flushed. -* For the associated OOI of this scan profile mutation, the `Scheduler` - system will get the enabled boefjes for this OOI. (`tasks = ooi * boefjes`) +The dataflow is as follows: -* For each enabled boefje, a `BoefjeTask` will be created and added to the - `PriorityQueue` of the `BoefjeScheduler`. A `BoefjeTask` is an object - with the correct specification for the task runner to execute a boefje. +- The plugin cache of the organisation will be flushed at a specified interval. -* Each task will be checked if it is: +- Due to the flushing of the cache we get a new list of enabled boefjes for + an organisation. + (`connectors.services.katalogus._flush_organisations_boefje_type_cache()`) - * `is_allowed_to_run()` +- New `BoefjeTask` tasks will be created for enabled boefjes and on which type + of ooi it can be used. - * `is_task_running()` +- The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to the + queue. The `PrioritizedItem` will contain the created `BoefjeTask`. - * `has_grace_period_passed()` +- A `TaskRun` reference to the task is created to keep track of the status + of the task (`post_push`). - * `is_item_on_queue_by_hash()` +##### 3. Rescheduling of prior tasks -* The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to - the queue. The `PrioritizedItem` will contain the created `BoefjeTask`. - Additionally the `BoefjeTask` will be added to the database - (`post_push()`). And serves as a log of the tasks that have been - queued/executed, and can be queried through the API. +![diagram009](./img/diagram009.svg) -```mermaid -sequenceDiagram - participant Scheduler - - %% enable when github uses v10.3.0+ of mermaid - %% create participant RabbitMQ - %% scheduler->>rabbitmq: consume scan_profile_mutations - %% destroy rabbitmq - %% rabbitmq->>scheduler: consume scan_profile_mutations - - participant RabbitMQ - participant Katalogus - participant Bytes - participant TaskStore - participant PriorityQueueStore - - Scheduler->>RabbitMQ: consume scan_profile_mutations - RabbitMQ->>Scheduler: consume scan_profile_mutations - - rect rgb(242, 242, 242) - note right of Scheduler: get_boefjes_for_ooi() - Scheduler->>Katalogus: get_boefjes_by_type_and_org() - end - - Scheduler->>Scheduler: Create BoefjeTask objects - Scheduler->>Scheduler: is_task_allowed_to_run() - - rect rgb(242, 242, 242) - note right of Scheduler: is_task_running() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: has_grace_period_passed() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: is_item_on_queue_by_hash() - Scheduler->>PriorityQueueStore: get_latest_task_by_hash() - end - - Scheduler->>Scheduler: Create PrioritizedItem - Scheduler->>PriorityQueueStore: push_item_to_queue_with_timeout() -``` +In order to re-run tasks that have been executed in the past we try to create +new tasks on ooi's. We continuously get a batch of random ooi's from octopoes +(`schedulers.boefje.push_tasks_for_random_objects`). The `BoefjeTask` tasks +from these these ooi's (`tasks = ooi * boefjes`) will get the priority that has +been calculated by the ranker. -**2. New Boefjes** +At the moment a task will get the priority of 3, when 7 days have gone by (e.g. +how longer it _hasn't_ executed again, the higher the priority it will get). +For everything before those 7 days it will scale the priority appropriately. -When a plugin of type `boefje` is enabled or disabled in Rocky. This is -triggered when the plugin cache of an organisation is flushed. +The dataflow is as follows: -* The cache of the organisation will be flushed at a specified interval. +- From Octopoes we get `n` random ooi's (`get_random_objects`) -* Due to the flushing of the cache we get a new list of enabled boefjes for - an organisation. - (`connectors.services.katalogus._flush_organisations_boefje_type_cache()`) +- For each OOI, the `Scheduler` will get the enabled boefjes for this OOI. + (`tasks = ooi * boefjes`) -* New tasks will be created for enabled boefjes. +- For each enabled boefje, a `BoefjeTask` will be created and added to the + `PriorityQueue` of the `BoefjeScheduler`. -```mermaid -sequenceDiagram - participant Scheduler - - participant Katalogus - participant Octopoes - participant Bytes - participant TaskStore - participant PriorityQueueStore - - Scheduler->>Katalogus: get_new_boefjes_by_org_id() - - loop for boefje in new_boefjes - Scheduler->>Octopoes: get_objects_by_object_types() - end - - rect rgb(191, 223, 255) - note right of Scheduler: push_task() - Scheduler->>Scheduler: Create BoefjeTask object - Scheduler->>Scheduler: is_task_allowed_to_run() - - rect rgb(242, 242, 242) - note right of Scheduler: is_task_running() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: has_grace_period_passed() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: is_item_on_queue_by_hash() - Scheduler->>PriorityQueueStore: get_latest_task_by_hash() - end - - Scheduler->>Scheduler: Create PrioritizedItem - Scheduler->>PriorityQueueStore: push_item_to_queue_with_timeout() - end -``` +- The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to the + queue. The `PrioritizedItem` will contain the created `BoefjeTask`. -2. Rescheduling of oois (`schedulers.boefje.push_tasks_for_random_objects`). In - order to fill up the queue and to enforce that we reschedule tasks. We - continuously get a batch of random ooi's from octopoes - (`get_random_objects`). The tasks of from these ooi's (`tasks = ooi * boefjes`) - will get the priority that has been calculated by the ranker. At the moment - a task will get the priority of 3, when 7 days have gone by (e.g. how longer - it hasn't been running the higher the priority it will get). For everything - before those 7 days it will scale the priority appropriately. +- A `TaskRun` reference to the task is created to keep track of the status + of the task (`post_push`). - * From Octopoes we get `n` random ooi's (`get_random_objects`) +##### 4. Manual scan job - * For each OOI, the `Scheduler` will get the enabled boefjes for this OOI. - (`tasks = ooi * boefjes`) +![diagram010](./img/diagram010.svg) - * For each enabled boefje, a `BoefjeTask` will be created and added to the - `PriorityQueue` of the `BoefjeScheduler`. +Scan jobs created by the user in Rocky (`server.push_queue`), will +get the highest priority of 1. Note, that this will circumvent all the checks +that are present in the `BoefjeScheduler`. - * Each task will be checked if it is: +The dataflow is as follows: - * `is_allowed_to_run()` +- Rocky will create a `BoefjeTask` that will be pushed directly to the + specified queue. - * `is_task_running()` +- The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to the + queue. The `PrioritizedItem` will contain the created `BoefjeTask`. - * `has_grace_period_passed()` +- A `TaskRun` reference to the task is created to keep track of the status + of the task (`post_push`). - * `is_item_on_queue_by_hash()` +### `NormalizerScheduler` - * The `BoefjeScheduler` will then create a `PrioritizedItem` and push it to - the queue. The `PrioritizedItem` will contain the created `BoefjeTask`. - Additionally the `BoefjeTask` will be added to the database - (`post_push()`). And serves as a log of the tasks that have been - queued/executed, and can be queried through the API. +#### Design - ```mermaid - sequenceDiagram - participant Scheduler +The `NormalizerScheduler` is tasked with creating tasks that are able to be +picked up and processed by a 'Task Runner'. The scheduler creates a +`NormalizerTask` to the specification that the 'Task Runner' can interpret, +namely the instance of a `NormalizerTask`. - participant Octopoes - participant Bytes - participant TaskStore - participant PriorityQueueStore +The of queueing and processing a `NormalizerTask` task is the same as for +the `BoefjeScheduler`. Reference that section for a more in-depth explanation. - Scheduler->>Octopoes: get_random_objects() +Before `NormalizerTask` is wrapped by a `PrioritizedItem`, and pushed to the +queue we will check the following: - loop for ooi in random_oois - Scheduler->>Octopoes: get_boefjes_for_ooi() - end +- `is_task_allowed_to_run()` - rect rgb(191, 223, 255) - note right of Scheduler: push_task(boefje, ooi) - Scheduler->>Scheduler: Create BoefjeTask object - Scheduler->>Scheduler: is_task_allowed_to_run() + - is the normalizer enabled - rect rgb(242, 242, 242) - note right of Scheduler: is_task_running() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end +- `is_task_running()` - rect rgb(242, 242, 242) - note right of Scheduler: has_grace_period_passed() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end + - is task still running according to the datastore (`TaskStore`)? - rect rgb(242, 242, 242) - note right of Scheduler: is_item_on_queue_by_hash() - Scheduler->>PriorityQueueStore: get_latest_task_by_hash() - end +#### Processes - Scheduler->>Scheduler: Create PrioritizedItem - Scheduler->>PriorityQueueStore: push_item_to_queue_with_timeout() - end - ``` +The following processes within a `NormalizerScheduler` will create a +`NormalizerTask` tasks: -3. Scan jobs created by the user in Rocky (`server.push_queue`), these tasks - will get the highest priority of 1. Note, that this will circumvent all - the checks that are present in +1. A raw file is created in Bytes - * Rocky will create a `BoefjeTask` that will be pushed directly to the - specified queue. +##### 1. Raw file creation in Bytes -```mermaid -sequenceDiagram - participant Rocky - participant Server - participant Scheduler - participant PriorityQueueStore - - Rocky->>Server: POST /queues/{queue_id}/push - Server->>Scheduler: push_item_to_queue() - Scheduler->>PriorityQueueStore: push() -``` +When a raw file is created (`schedulers.normalizer.create_tasks_for_raw_data`) +- The `NormalizerScheduler` retrieves raw files that have been created in Bytes + from a message queue. -##### Creation of normalizer jobs +- For every mime type of the raw file, the `NormalizerScheduler` will retrieve + the enabled normalizers for this mime type. (`create_tasks_for_raw_data()`) -For a `normalizer` job the following events will trigger a dataflow procedure +- For every enabled normalizer, a `NormalizerTask` will be created and added to + the `PriorityQueue` of the `NormalizerScheduler`. -1. When a raw file is created (`schedulers.normalizer.create_tasks_for_raw_data`) +## Class Diagram - * The `NormalizerScheduler` retrieves raw files that have been created in - Bytes from a message queue. +The following diagram we can explore the code level of the scheduler +application, and its class structure. - * For every mime type of the raw file, the `NormalizerScheduler` will - retrieve the enabled normalizers for this mime type. - (`create_tasks_for_raw_data()`) +The following describes the main components of the scheduler application: - * For every enabled normalizer, a `NormalizerTask` will be created and - added to the `PriorityQueue` of the `NormalizerScheduler`. +- `App` - The main application class, which is responsible for starting the + schedulers. It also contains the server, which is responsible for handling + the rest api requests. The `App` implements multiple `Scheduler` instances. + The `run()` method starts the schedulers, the listeners, the monitors, and + the server in threads. The `run()` method is the main thread of the + application. -```mermaid -sequenceDiagram - participant Scheduler - - %% enable when github uses v10.3.0+ of mermaid - %% create participant RabbitMQ - %% Scheduler->>RabbitMQ: consume raw_file_received - %% destroy RabbitMQ - %% RabbitMQ->>Scheduler: consume raw_file_received - - participant RabbitMQ - participant Katalogus - participant Bytes - participant TaskStore - participant PriorityQueueStore - - Scheduler->>RabbitMQ: consume raw_file_received - RabbitMQ->>Scheduler: consume raw_file_received - - loop for mime_type in raw_file.mime_types - Scheduler->>Katalogus: get_normalizers_for_mime_type() - end - - rect rgb(191, 223, 255) - note right of Scheduler: push_task() - Scheduler->>Scheduler: Create NormalizerTask object - Scheduler->>Scheduler: is_task_allowed_to_run() - - rect rgb(242, 242, 242) - note right of Scheduler: is_task_running() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: has_grace_period_passed() - Scheduler->>TaskStore: get_latest_task_by_hash() - Scheduler->>Bytes: get_last_run_boefje() - end - - rect rgb(242, 242, 242) - note right of Scheduler: is_item_on_queue_by_hash() - Scheduler->>PriorityQueueStore: get_latest_task_by_hash() - end - - Scheduler->>Scheduler: Create PrioritizedItem - Scheduler->>PriorityQueueStore: push_item_to_queue_with_timeout() - end - - - Scheduler->>Scheduler: Create PrioritizedItem - Scheduler->>PriorityQueueStore: push_item_to_queue_with_timeout() -``` +- `Scheduler` - And implementation of a `Scheduler` class is responsible for + populating the queue with tasks. Contains a `PriorityQueue`. The `run()` + method starts executes threads and listeners, which fill up the queue with + tasks. -#### C4 Code level (Condensed class diagram) +- `PriorityQueue` - The queue class, which is responsible for storing the + tasks. -The following diagram we can explore the code level of the scheduler -application, and its class structure. +- `Server` - The server class, which is responsible for handling the HTTP + requests. ```mermaid classDiagram - class App { +AppContext ctx - +Dict[str, ThreadRunner] threads +Dict[str, Scheduler] schedulers - +Dict[str, Listener] listeners +Server server - shutdown() + + monitor_organisations() + collect_metrics() + start_schedulers() + start_monitors() + start_collectors() + start_server() run() + shutdown() + stop_threads() } class Scheduler { <> +AppContext ctx +PriorityQueue queue - +Ranker ranker - +Dict[str, ThreadRunner] threads +Dict[str, Listener] listeners + +Dict[str, ThreadRunner] threads + + run() + run_in_thread() + push_items_to_queue() + push_item_to_queue_with_timeout() push_item_to_queue() - pop_item_from_queue() - pop_item_from_queue_with_timeout() post_push() + + pop_item_from_queue() post_pop() - run_in_thread() + enable() - disabled() - is_enabled() - is_space_on_queue() - is_item_on_queue_by_hash() + disable() stop() stop_listeners() stop_threads() + + is_enabled() + is_space_on_queue() + is_item_on_queue_by_hash() + + last_activity() + dict() + } + + class Server { + +AppContext ctx + +Dict[str, Scheduler] schedulers + + health() + metrics() + get_schedulers() + get_scheduler() + patch_scheduler() + list_tasks() + get_task() + patch_task() + get_task_stats() + get_queues() + get_queue() + pop_queue() + push_queue() run() } @@ -611,6 +432,7 @@ classDiagram qsize() full() is_item_on_queue() + is_item_on_queue_by_hash() get_p_item_by_identifier() create_hash() dict() @@ -631,46 +453,87 @@ classDiagram get_items_by_scheduler_id() } - class Ranker { - <> - +AppContext ctx - rank() - } - class Listener { listen() } - App --|> "many" Scheduler : Implements - App --|> "many" Listener : Has + class ThreadRunner { + run_forever() + run_once() + run() + join() + stop() + } + App --|> "many" Scheduler : Implements + App --|> "one" Server: Has Scheduler --|> "1" PriorityQueue : Has - Scheduler --|> "1" Ranker : Has Scheduler --|> "many" ThreadRunner : Has Scheduler --|> "many" Listener : Has - PriorityQueue --|> PriorityQueueStore: References ``` -The following describes the main components of the scheduler application: +## Database Entity Relationship Diagram -* `App` - The main application class, which is responsible for starting the - schedulers. It also contains the server, which is responsible for handling - the rest api requests. The `App` implements multiple `Scheduler` instances. - The `run()` method starts the schedulers, the listeners, the monitors, and - the server in threads. The `run()` method is the main thread of the - application. +```mermaid +erDiagram + items { + uuid id PK + character_varying scheduler_id + character_varying hash + integer priority + jsonb data + timestamp_with_time_zone created_at + timestamp_with_time_zone modified_at + } -* `Scheduler` - And implementation of a `Scheduler` class is responsible for - populating the queue with tasks. Contains has a `PriorityQueue` and a - `Ranker`. The `run()` method starts executes threads and listeners, which - fill up the queue with tasks. + tasks { + uuid id PK + character_varying scheduler_id + taskstatus status + timestamp_with_time_zone created_at + timestamp_with_time_zone modified_at + jsonb p_item + character_varying type + } +``` -* `PriorityQueue` - The queue class, which is responsible for storing the - tasks. +## Project structure -* `Ranker` - The ranker class, which is responsible for ranking the tasks, - and can be called from the `Scheduler` class in order to rank the tasks. +``` +$ tree -L 3 --dirsfirst +. +├── docs/ # additional documentation +├── scheduler/ # scheduler python module +│   ├── config # application settings configuration +│   ├── connectors # external service connectors +│   │   ├── listeners # channel/socket listeners +│   │   ├── services # rest api connectors +│   │   └── __init__.py +│   ├── context/ # shared application context +│   ├── models/ # internal model definitions +│   ├── queues/ # priority queue +│   ├── rankers/ # priority/score calculations +│   ├── storage/ # data abstraction layer +│   ├── schedulers/ # schedulers +│   ├── server/ # http rest api server +│   ├── utils/ # common utility functions +│   ├── __init__.py +│   ├── __main__.py +│   ├── app.py # kat scheduler app implementation +│   └── version.py # version information +└─── tests/ +    ├── factories/ +    ├── integration/ +    ├── mocks/ +    ├── scripts/ +    ├── simulation/ +    ├── unit/ +    ├── utils/ +    └── __init__.py +``` -* `Server` - The server class, which is responsible for handling the HTTP - requests. +[^1]: + As of writing a `TaskRun` is known within the scheduler as a `Task`. In the + future the naming of this model will change to accurate describe its role + and functionality. diff --git a/mula/docs/img/diagram001.svg b/mula/docs/img/diagram001.svg new file mode 100644 index 00000000000..2ccc3de4674 --- /dev/null +++ b/mula/docs/img/diagram001.svg @@ -0,0 +1,4 @@ + + + +
      Scheduler App
      [software system]
     Task Runner
     [software system]
     Rocky
     [software system]
     Octopoes
     [graph database]
     RabbitMQ
     [message broker]
     Katalogus
     [software system]
     Bytes
     [software system]
    PostgreSQL
    diagram001
    diff --git a/mula/docs/img/diagram002.svg b/mula/docs/img/diagram002.svg new file mode 100644 index 00000000000..7254bd55862 --- /dev/null +++ b/mula/docs/img/diagram002.svg @@ -0,0 +1,4 @@ + + + +
    diagram002
     Schedulers
     Server
    Priority Queue
     Scheduler
    Scheduler App
    [software system]
     Task Runner
     [software system]
     Rocky
     [software system]
    TaskStore
    [table]
    PQStore
    [table]
    diff --git a/mula/docs/img/diagram003.svg b/mula/docs/img/diagram003.svg new file mode 100644 index 00000000000..9491f3fba36 --- /dev/null +++ b/mula/docs/img/diagram003.svg @@ -0,0 +1,4 @@ + + + +
    diagram003
    Priority Queue
     BoefjeScheduler
    p_item
    Push
    p_item
     Task Runner
    Pop
    p_item
    p_item
    p_item
    BoefjeTask
    Scheduler App
    diff --git a/mula/docs/img/diagram004.svg b/mula/docs/img/diagram004.svg new file mode 100644 index 00000000000..59e958b196c --- /dev/null +++ b/mula/docs/img/diagram004.svg @@ -0,0 +1,4 @@ + + + +
    diagram004
    Priority Queue
     BoefjeScheduler
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
     PrioritizedItem
    diff --git a/mula/docs/img/diagram005.svg b/mula/docs/img/diagram005.svg new file mode 100644 index 00000000000..3f344511e0f --- /dev/null +++ b/mula/docs/img/diagram005.svg @@ -0,0 +1,4 @@ + + + +
    diagram005
    Priority Queue
     BoefjeScheduler
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
    TaskRun (Task List)
    id
    scheduler_id
    type
    status
    created_at
    modified_at
    p_item
    1
    boefje_org_1
    boefje
    COMPLETED
    2024-01-01
    abcd-0123
    2
    boefje_org_1
    boefje
    RUNNING
    2024-01-05
    abcd-0123
    3
    post_push
    update
    1
    1
    2
    2
    3
    3
    4
    4
    5
    5
    status: PENDING
    status: QUEUED
    status: DISPATCHED
    status: RUNNING
    status: COMPLETED / FAILED / CANCELLED
    diff --git a/mula/docs/img/diagram006.svg b/mula/docs/img/diagram006.svg new file mode 100644 index 00000000000..acfb4572e4c --- /dev/null +++ b/mula/docs/img/diagram006.svg @@ -0,0 +1,4 @@ + + + +
    diagram006
    Priority Queue
     BoefjeScheduler
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
    scan profile mutations
    enabled boefjes
    rescheduling
    1
    2
    3
    manual scan job
    4
    diff --git a/mula/docs/img/diagram007.svg b/mula/docs/img/diagram007.svg new file mode 100644 index 00000000000..59b5244e1e1 --- /dev/null +++ b/mula/docs/img/diagram007.svg @@ -0,0 +1,4 @@ + + + +
    diagram007
    Priority Queue
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
     BoefjeScheduler
    scan profile mutations
    subscribe
     RabbitMQ
     [message broker]
    1
    diff --git a/mula/docs/img/diagram008.svg b/mula/docs/img/diagram008.svg new file mode 100644 index 00000000000..a61b882fe6f --- /dev/null +++ b/mula/docs/img/diagram008.svg @@ -0,0 +1,4 @@ + + + +
    diagram008
    Priority Queue
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
     BoefjeScheduler
    enabled boefjes
    cached
     Katalogus
     [external software system]
    2
    diff --git a/mula/docs/img/diagram009.svg b/mula/docs/img/diagram009.svg new file mode 100644 index 00000000000..2c4f7e39761 --- /dev/null +++ b/mula/docs/img/diagram009.svg @@ -0,0 +1,4 @@ + + + +
    diagram009
    Priority Queue
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
     BoefjeScheduler
    rescheduling
    GET
     Octopoes
     [external software system]
    3
    diff --git a/mula/docs/img/diagram010.svg b/mula/docs/img/diagram010.svg new file mode 100644 index 00000000000..917e3ca172a --- /dev/null +++ b/mula/docs/img/diagram010.svg @@ -0,0 +1,4 @@ + + + +
    diagram010
    Priority Queue
    p_item
    push
    p_item
     Task Runner
    pop
    p_item
    p_item
    p_item
    BoefjeTask
     BoefjeScheduler
    manual scan job
    POST
     Rocky
     [external software system]
    4
    diff --git a/mula/docs/img/schematic-drawing.svg b/mula/docs/img/schematic-drawing.svg new file mode 100644 index 00000000000..027054eba25 --- /dev/null +++ b/mula/docs/img/schematic-drawing.svg @@ -0,0 +1,4 @@ + + + +
      Scheduler App
      [software system]
    Scheduler App...
     Task Runner
     [software system]
    Task Runner...
     Rocky
     [software system]
    Rocky...
     Octopoes
     [graph database]
    Octopoes...
     RabbitMQ
     [message broker]
    RabbitMQ...
     Katalogus
     [software system]
    Katalogus...
     Bytes
     [software system]
    Bytes...
    PostgreSQL
    PostgreSQL
    diagram001
    diagram001
    diagram002
    diagram002
     Schedulers
     Schedulers
     Server
     Server
    Priority Queue
    Priority Queue
     Scheduler
     Scheduler
    Scheduler App
    [software system]
    Scheduler App...
     Task Runner
     [software system]
    Task Runner...
     Rocky
     [software system]
    Rocky...
    TaskStore
    [table]
    TaskStore...
    PQStore
    [table]
    PQStore...
    diagram010
    diagram010
    Priority Queue
    Priority Queue
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
     BoefjeScheduler
     BoefjeScheduler
    manual scan job
    manual scan job
    POST
    POST
     Rocky
     [external software system]
    Rocky...
    4
    4
    diagram003
    diagram003
    Priority Queue
    Priority Queue
     BoefjeScheduler
     BoefjeScheduler
    p_item
    p_item
    Push
    Push
    p_item
    p_item
     Task Runner
     Task Runner
    Pop
    Pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
    Scheduler App
    Scheduler App
    diagram004
    diagram004
    Priority Queue
    Priority Queue
     BoefjeScheduler
     BoefjeScheduler
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
    BoefjeTask
    BoefjeTask
     PrioritizedItem
     PrioritizedItem
    diagram005
    diagram005
    Priority Queue
    Priority Queue
     BoefjeScheduler
     BoefjeScheduler
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
    TaskRun (Task List)
    id
    id
    scheduler_id
    scheduler_id
    type
    type
    status
    status
    created_at
    created_at
    modified_at
    modified_at
    p_item
    p_item
    1
    1
    boefje_org_1
    boefje_org_1
    boefje
    boefje
    COMPLETED
    COMPLETED
    2024-01-01
    2024-01-01
    abcd-0123
    abcd-0123
    2
    2
    boefje_org_1
    boefje_org_1
    boefje
    boefje
    RUNNING
    RUNNING
    2024-01-05
    2024-01-05
    abcd-0123
    abcd-0123
    3
    3
    post_push
    post_push
    update
    update
    1
    1
    1
    1
    2
    2
    2
    2
    3
    3
    3
    3
    4
    4
    4
    4
    5
    5
    5
    5
    status: PENDING
    status: PENDING
    status: QUEUED
    status: QUEUED
    status: DISPATCHED
    status: DISPATCHED
    status: RUNNING
    status: RUNNING
    status: COMPLETED / FAILED / CANCELLED
    status: COMPLETED / FAILED / CANCELLED
    diagram006
    diagram006
    Priority Queue
    Priority Queue
     BoefjeScheduler
     BoefjeScheduler
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
    scan profile mutations
    scan profile mutations
    enabled boefjes
    enabled boefjes
    rescheduling
    rescheduling
    1
    1
    2
    2
    3
    3
    manual scan job
    manual scan job
    4
    4
    diagram007
    diagram007
    Priority Queue
    Priority Queue
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
     BoefjeScheduler
     BoefjeScheduler
    scan profile mutations
    scan profile mutations
    subscribe
    subscribe
     RabbitMQ
     [message broker]
    RabbitMQ...
    1
    1
    diagram008
    diagram008
    Priority Queue
    Priority Queue
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
     BoefjeScheduler
     BoefjeScheduler
    enabled boefjes
    enabled boefjes
    cached
    cached
     Katalogus
     [external software system]
    Katalogus...
    2
    2
    diagram009
    diagram009
    Priority Queue
    Priority Queue
    p_item
    p_item
    push
    push
    p_item
    p_item
     Task Runner
     Task Runner
    pop
    pop
    p_item
    p_item
    p_item
    p_item
    p_item
    p_item
    BoefjeTask
    BoefjeTask
     BoefjeScheduler
     BoefjeScheduler
    rescheduling
    rescheduling
    GET
    GET
     Octopoes
     [external software system]
    Octopoes...
    3
    3
    Text is not SVG - cannot display
    diff --git a/mula/scheduler/app.py b/mula/scheduler/app.py index c0feffeab1c..83c49aa029a 100644 --- a/mula/scheduler/app.py +++ b/mula/scheduler/app.py @@ -219,7 +219,6 @@ def run(self) -> None: following processes: * schedulers - * listeners * monitors * metrics collecting * api server From e485712937aebdc0622226a3c535d12a18aaec07 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 15:50:58 +0100 Subject: [PATCH 35/85] Revert fastapi and starlette downgrade (#2489) --- boefjes/poetry.lock | 18 +++++++++--------- boefjes/pyproject.toml | 2 +- boefjes/requirements-dev.txt | 12 ++++++------ boefjes/requirements.txt | 12 ++++++------ 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index e68656b8751..917427839c3 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -658,18 +658,18 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.1" +version = "0.109.2" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, - {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, ] [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.35.0,<0.36.0" +starlette = ">=0.36.3,<0.37.0" typing-extensions = ">=4.8.0" [package.extras] @@ -2504,20 +2504,20 @@ sqlcipher = ["sqlcipher3_binary"] [[package]] name = "starlette" -version = "0.35.1" +version = "0.36.3" description = "The little ASGI library that shines." optional = false python-versions = ">=3.8" files = [ - {file = "starlette-0.35.1-py3-none-any.whl", hash = "sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25"}, - {file = "starlette-0.35.1.tar.gz", hash = "sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc"}, + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, ] [package.dependencies] anyio = ">=3.4.0,<5" [package.extras] -full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart", "pyyaml"] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] [[package]] name = "tldextract" @@ -2850,4 +2850,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "bb0be171cd341ba82539392510ea1ccecd0222c920eb5880d1255ce9c1a1031d" +content-hash = "8d0a745650b94605b06881e904fd43ddce55894aca2b4f2f7f2b72c327836418" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index e6243bcab0e..f8da0aef9ea 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -13,7 +13,7 @@ httpx = "^0.26.0" jsonschema = "^4.17.0" pydantic = "^2.4.2" docker = "^6.1.3" -fastapi = "^0.109.1" +fastapi = "^0.109.2" uvicorn = "^0.26.0" psycopg2 = "^2.9.6" pynacl = "^1.5.0" diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 0e44601d969..96939699a64 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -321,9 +321,9 @@ docker==6.1.3 ; python_version >= "3.10" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1245,9 +1245,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index b9321395b48..a458cccf509 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -321,9 +321,9 @@ docker==6.1.3 ; python_version >= "3.10" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ - --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a +fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ + --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 filelock==3.13.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1233,9 +1233,9 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade -starlette==0.35.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ - --hash=sha256:50bbbda9baa098e361f398fda0928062abbaf1f54f4fadcbe17c092a01eb9a25 +starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ + --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 From 4288eebf1f1d976816aec05691e5ce398029985c Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 12 Feb 2024 15:57:25 +0100 Subject: [PATCH 36/85] Do not show an error in tasks stats if no tasks have run yet (#2486) Co-authored-by: Jan Klopper --- rocky/rocky/templates/tasks/partials/stats.html | 2 +- rocky/rocky/views/tasks.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rocky/rocky/templates/tasks/partials/stats.html b/rocky/rocky/templates/tasks/partials/stats.html index 59289777544..78202add532 100644 --- a/rocky/rocky/templates/tasks/partials/stats.html +++ b/rocky/rocky/templates/tasks/partials/stats.html @@ -3,7 +3,7 @@

    {% translate "Stats - Last 24 hours" %}

    - {% if stats %} + {% if not stats_error %}
    diff --git a/rocky/rocky/views/tasks.py b/rocky/rocky/views/tasks.py index 676bf5d8f9f..c85dd0e8a4c 100644 --- a/rocky/rocky/views/tasks.py +++ b/rocky/rocky/views/tasks.py @@ -84,7 +84,9 @@ def get_context_data(self, **kwargs): try: context["stats"] = client.get_task_stats(self.organization.code, self.plugin_type) except SchedulerError: - context["stats"] = None + context["stats_error"] = True + else: + context["stats_error"] = False context["breadcrumbs"] = [ {"url": reverse("task_list", kwargs={"organization_code": self.organization.code}), "text": _("Tasks")}, ] From f5ce81b1ae1bf83542eb6cc63c2dc1fd6e09bb27 Mon Sep 17 00:00:00 2001 From: originalsouth Date: Tue, 13 Feb 2024 11:19:24 +0100 Subject: [PATCH 37/85] Make rtest fail less than 1 in 20 (#2441) --- octopoes/tests/robot/05_bits.robot | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/octopoes/tests/robot/05_bits.robot b/octopoes/tests/robot/05_bits.robot index 949a0c52488..907c5701b5c 100644 --- a/octopoes/tests/robot/05_bits.robot +++ b/octopoes/tests/robot/05_bits.robot @@ -1,5 +1,7 @@ *** Settings *** Resource robot.resource +Library OperatingSystem +Library BuiltIn Test Setup Setup Test Test Teardown Teardown Test @@ -12,8 +14,8 @@ Bit With Scan Level 1 Object List Should Not Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN Declare Scan Profile Hostname|internet|example.com 1 Await Sync - Object List Should Contain KATFindingType|KAT-NXDOMAIN - Object List Should Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN + Wait Until Keyword Succeeds 60s 1s Object List Should Contain KATFindingType|KAT-NXDOMAIN + Wait Until Keyword Succeeds 60s 1s Object List Should Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN Declare Scan Profile Hostname|internet|example.com 0 Await Sync - Object List Should Not Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN + Wait Until Keyword Succeeds 60s 1s Object List Should Not Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN From 11f6bfd5b6e206ec7311acdfa8ab7faafd87c8f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 13 Feb 2024 12:06:55 +0100 Subject: [PATCH 38/85] Bump python-multipart from 0.0.6 to 0.0.7 in /bytes (#2494) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: ammar --- bytes/poetry.lock | 10 +++++----- bytes/pyproject.toml | 2 +- bytes/requirements-dev.txt | 6 +++--- bytes/requirements.txt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 4ae8fe5ba24..3d6d1941d48 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -1596,17 +1596,17 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] name = "python-multipart" -version = "0.0.6" +version = "0.0.7" description = "A streaming multipart parser for Python" optional = false python-versions = ">=3.7" files = [ - {file = "python_multipart-0.0.6-py3-none-any.whl", hash = "sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18"}, - {file = "python_multipart-0.0.6.tar.gz", hash = "sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132"}, + {file = "python_multipart-0.0.7-py3-none-any.whl", hash = "sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49"}, + {file = "python_multipart-0.0.7.tar.gz", hash = "sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9"}, ] [package.extras] -dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==1.7.3)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"] +dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==2.2.0)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"] [[package]] name = "requests" @@ -1960,4 +1960,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "24a770301d13b18056f133e701e4b496878ae735c322d9dd2f3c2131d0065f05" +content-hash = "68a23f081b78a4d74315459fabceca3c85b12b46e4564e5f29e20e7095c6d74c" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index cd76078d3ee..b59f78152c0 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -36,7 +36,7 @@ pydantic = "^2.5.3" pynacl = "^1.5.0" python-dotenv = "^1.0.0" python-jose = { version = "^3.3.0", extras = ["cryptography"] } -python-multipart = "^0.0.6" +python-multipart = "^0.0.7" requests = "^2.31.0" rfc3161ng = "^2.1.3" rsa = "^4.9" diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index a92858992ea..6f3b64bfe14 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -713,9 +713,9 @@ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132 \ - --hash=sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18 +python-multipart==0.0.7 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9 \ + --hash=sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 672228512d2..2605cdbd567 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -636,9 +636,9 @@ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e9925a80bb668529f1b67c7fdb0a5dacdd7cbfc6fb0bff3ea443fe22bdd62132 \ - --hash=sha256:ee698bab5ef148b0a760751c261902cd096e57e10558e11aca17646b74ee1c18 +python-multipart==0.0.7 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9 \ + --hash=sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 From 07c9458f22b02494a224671547a764818a46c429 Mon Sep 17 00:00:00 2001 From: Rieven Date: Tue, 13 Feb 2024 18:44:28 +0100 Subject: [PATCH 39/85] Health page accessable during onboarding (#2499) --- rocky/rocky/middleware/onboarding.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rocky/rocky/middleware/onboarding.py b/rocky/rocky/middleware/onboarding.py index 1f68d538e05..fb96f152fa7 100644 --- a/rocky/rocky/middleware/onboarding.py +++ b/rocky/rocky/middleware/onboarding.py @@ -22,6 +22,7 @@ def middleware(request): or "/plugins" in request.path or "/i18n/" in request.path or "/introduction/" in request.path + or "/health/" in request.path or request.path.startswith("/api/") ) and not member_onboarded From 3ada1da324fe691b644db8e7dd8e6f40f386f308 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Wed, 14 Feb 2024 09:33:12 +0100 Subject: [PATCH 40/85] Fix/systems report domain count (#2490) Co-authored-by: Jeroen Dekkers Co-authored-by: Jan Klopper --- .../report_types/systems_report/report.py | 5 +- rocky/tests/conftest.py | 21 ++- rocky/tests/integration/test_reports.py | 2 +- rocky/tests/reports/test_systems_report.py | 132 ++++++++++++++++++ 4 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 rocky/tests/reports/test_systems_report.py diff --git a/rocky/reports/report_types/systems_report/report.py b/rocky/reports/report_types/systems_report/report.py index bc51ff5f3e5..1d6b057b70f 100644 --- a/rocky/reports/report_types/systems_report/report.py +++ b/rocky/reports/report_types/systems_report/report.py @@ -126,8 +126,11 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: total_systems = len(ip_services) total_domains = 0 + domains = set() for data in ip_services.values(): - total_domains += len(data["hostnames"]) + domains.update(data["hostnames"]) + + total_domains = len(domains) summary = {"total_systems": total_systems, "total_domains": total_domains} diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index fa90ba98db4..913ed421af4 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -3,7 +3,7 @@ import json import logging from datetime import datetime, timezone -from ipaddress import IPv4Address +from ipaddress import IPv4Address, IPv6Address from os import urandom from pathlib import Path from typing import Dict, List, Optional, Union @@ -32,7 +32,9 @@ from octopoes.models import OOI, DeclaredScanProfile, Reference, ScanLevel from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.findings import CVEFindingType, Finding, KATFindingType, RiskLevelSeverity -from octopoes.models.ooi.network import IPAddressV4, Network +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network +from octopoes.models.ooi.service import Service +from octopoes.models.ooi.software import Software from octopoes.models.origin import Origin, OriginType from octopoes.models.transaction import TransactionRecord from rocky.scheduler import Task @@ -444,11 +446,26 @@ def ipaddressv4(network): return IPAddressV4(network=network.reference, address=IPv4Address("192.0.2.1")) +@pytest.fixture +def ipaddressv6(network): + return IPAddressV6(network=network.reference, address=IPv6Address("2001:db8::1")) + + @pytest.fixture def hostname(network): return Hostname(name="example.com", network=network.reference) +@pytest.fixture +def service(): + return Service(name="domain") + + +@pytest.fixture +def software(): + return Software(name="DICOM") + + @pytest.fixture def cve_finding_type_2019_8331(): return CVEFindingType( diff --git a/rocky/tests/integration/test_reports.py b/rocky/tests/integration/test_reports.py index 81d501f54be..0927f01b202 100644 --- a/rocky/tests/integration/test_reports.py +++ b/rocky/tests/integration/test_reports.py @@ -65,7 +65,7 @@ def test_system_report(octopoes_api_connector: OctopoesAPIConnector, valid_time) assert data["input_ooi"] == input_ooi assert data["summary"] == { - "total_domains": 10, # TODO: this is not deduplicated, should it be? + "total_domains": 7, "total_systems": 2, } assert data["services"] == { diff --git a/rocky/tests/reports/test_systems_report.py b/rocky/tests/reports/test_systems_report.py new file mode 100644 index 00000000000..c80930fc933 --- /dev/null +++ b/rocky/tests/reports/test_systems_report.py @@ -0,0 +1,132 @@ +from reports.report_types.systems_report.report import SystemReport, SystemType + + +def test_systems_report_no_systems(mock_octopoes_api_connector, valid_time, hostname): + mock_octopoes_api_connector.oois = { + hostname.reference: hostname, + } + mock_octopoes_api_connector.queries = { + "Hostname. Date: Wed, 14 Feb 2024 09:53:50 +0100 Subject: [PATCH 41/85] Skip or hide section on Plugin Page (#2461) Co-authored-by: ammar --- .../templates/partials/report_setup_scan.html | 18 ++++++++++-------- rocky/reports/views/aggregate_report.py | 8 +++++++- rocky/reports/views/base.py | 13 ++++++++++--- rocky/reports/views/generate_report.py | 8 +++++++- rocky/reports/views/multi_report.py | 4 ++++ 5 files changed, 38 insertions(+), 13 deletions(-) diff --git a/rocky/reports/templates/partials/report_setup_scan.html b/rocky/reports/templates/partials/report_setup_scan.html index ec1d57a18dc..7b2cbddb538 100644 --- a/rocky/reports/templates/partials/report_setup_scan.html +++ b/rocky/reports/templates/partials/report_setup_scan.html @@ -16,15 +16,17 @@

    {% translate "Set up scan" %}

    {% translate "If you choose not to give a plugin permission to run, the data that plugin would collect or produce will be left out of the report which will then be generated based on the available data collected by the enabled plugins." %}

    -

    {% translate "Required plugins" %}

    -

    {% translate "This report type requires the following plugins to be enabled:" %}

    -
    - {% for required_plugin in plugins.required %} - {% include "partials/plugin_tile.html" with plugin=required_plugin %} + {% if not all_plugins_enabled.required %} +

    {% translate "Required plugins" %}

    +

    {% translate "This report type requires the following plugins to be enabled:" %}

    +
    + {% for required_plugin in plugins.required %} + {% include "partials/plugin_tile.html" with plugin=required_plugin %} - {% endfor %} -
    - {% if plugins.optional %} + {% endfor %} +
    + {% endif %} + {% if not all_plugins_enabled.optional %}

    {% translate "Suggested plugins" %}

    {% translate "This report requires at least one of the following plugins to be enabled to generate the report:" %} diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index 638eb60a9d7..bc6c2df3425 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -123,11 +123,17 @@ class SetupScanAggregateReportView(BreadcrumbsAggregateReportView, BaseReportVie def get(self, request, *args, **kwargs): if not self.selected_report_types: messages.error(self.request, _("Select at least one report type to proceed.")) + + if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: + return redirect(reverse("aggregate_report_view", kwargs=kwargs) + self.get_selection()) + return super().get(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["plugins"] = self.get_required_optional_plugins(get_plugins_for_report_ids(self.selected_report_types)) + context["plugins"], context["all_plugins_enabled"] = self.get_required_optional_plugins( + get_plugins_for_report_ids(self.selected_report_types) + ) return context diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index 76bd371d090..ffa12f9868f 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -84,7 +84,9 @@ def setup(self, request, *args, **kwargs): self.report_types = self.get_report_types_from_choice() report_ids = [report.id for report in self.report_types] - self.plugins = self.get_required_optional_plugins(get_plugins_for_report_ids(report_ids)) + self.plugins, self.all_plugins_enabled = self.get_required_optional_plugins( + get_plugins_for_report_ids(report_ids) + ) def get_oois(self) -> List[OOI]: if "all" in self.selected_oois: @@ -125,11 +127,16 @@ def get_report_types_for_aggregate_report( report_types[option] = self.get_report_types_for_generate_report(reports) return report_types - def get_required_optional_plugins(self, plugin_ids: Dict[str, Set[str]]) -> Dict[str, Plugin]: + def get_required_optional_plugins(self, plugin_ids: Dict[str, Set[str]]) -> (Dict[str, Plugin], Dict[str, bool]): plugins = {} for plugin, plugin_ids in plugin_ids.items(): plugins[plugin] = [get_katalogus(self.organization.code).get_plugin(plugin_id) for plugin_id in plugin_ids] - return plugins + + all_plugins_enabled = { + plugin_type: all(plugin.enabled for plugin in plugin_list) for plugin_type, plugin_list in plugins.items() + } + + return plugins, all_plugins_enabled def are_plugins_enabled(self, plugins_dict: Dict[str, Plugin]) -> bool: for k, plugins in plugins_dict.items(): diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index ddd32866e39..958ded2cd1c 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -114,11 +114,17 @@ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: if not self.selected_report_types: error_message = _("Select at least one report type to proceed.") messages.add_message(self.request, messages.ERROR, error_message) + + if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: + return redirect(reverse("generate_report_view", kwargs=kwargs) + self.get_selection()) + return super().get(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["plugins"] = self.get_required_optional_plugins(get_plugins_for_report_ids(self.selected_report_types)) + context["plugins"], context["all_plugins_enabled"] = self.get_required_optional_plugins( + get_plugins_for_report_ids(self.selected_report_types) + ) return context diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index fb747871839..7b4c68d409c 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -103,6 +103,10 @@ class SetupScanMultiReportView(BreadcrumbsMultiReportView, BaseReportView, Templ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: if not self.selected_report_types: messages.error(self.request, _("Select at least one report type to proceed.")) + + if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: + return redirect(reverse("multi_report_view", kwargs=kwargs) + self.get_selection()) + return super().get(request, *args, **kwargs) def get_context_data(self, **kwargs): From c056e85295dea84167862d9edd6830177c2df72f Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Wed, 14 Feb 2024 12:44:42 +0100 Subject: [PATCH 42/85] remove duplicate oois from report (#2504) Co-authored-by: Jan Klopper --- rocky/reports/views/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index ffa12f9868f..cac0a57d8ef 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -79,7 +79,7 @@ def get_context_data(self, **kwargs): class BaseReportView(OOIFilterView): def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) - self.selected_oois = request.GET.getlist("ooi", []) + self.selected_oois = list(set(request.GET.getlist("ooi", []))) self.selected_report_types = request.GET.getlist("report_type", []) self.report_types = self.get_report_types_from_choice() From b42b21cfcf0aac3633f962ccad67df5ea5241efd Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Wed, 14 Feb 2024 13:32:22 +0100 Subject: [PATCH 43/85] Rename list method to prevent conflict with builtin (#2498) Co-authored-by: Jan Klopper --- .../developer_documentation/octopoes.md | 4 +-- octopoes/octopoes/api/router.py | 4 +-- octopoes/octopoes/connector/octopoes.py | 2 +- octopoes/octopoes/core/service.py | 18 ++++++----- .../octopoes/repositories/ooi_repository.py | 4 +-- .../repositories/origin_repository.py | 4 +-- .../repositories/scan_profile_repository.py | 4 +-- octopoes/tests/conftest.py | 2 +- .../tests/integration/test_api_connector.py | 8 ++--- .../tests/integration/test_ooi_repository.py | 4 +-- octopoes/tests/test_octopoes_service.py | 4 +-- rocky/katalogus/views/plugin_detail.py | 2 +- .../aggregate_organisation_report/report.py | 2 +- rocky/reports/views/base.py | 2 +- rocky/rocky/views/finding_add.py | 2 +- rocky/rocky/views/mixins.py | 6 ++-- rocky/tests/objects/test_objects.py | 32 +++++++++---------- rocky/tests/test_groups_and_permissions.py | 4 +-- rocky/tools/forms/ooi_form.py | 2 +- 19 files changed, 56 insertions(+), 54 deletions(-) diff --git a/docs/source/developer_documentation/octopoes.md b/docs/source/developer_documentation/octopoes.md index ce8703d34c3..1772a377a55 100644 --- a/docs/source/developer_documentation/octopoes.md +++ b/docs/source/developer_documentation/octopoes.md @@ -377,7 +377,7 @@ It provides several methods for doing CRUD operations for the objects/entities. In particular, for querying objects we have: -- `OctopoesAPIConnector.list()` to filter on OOIs `type`, `scan_level`, `scan_profile_type` and `valid_time`. +- `OctopoesAPIConnector.list_objects()` to filter on OOIs `type`, `scan_level`, `scan_profile_type` and `valid_time`. This is used for example in the object overview page. Returns a paginated list of OOIs. @@ -438,7 +438,7 @@ class TagExample(OOI): # Query abstract class -OctopoesAPIConnector('http://octopoes', '_dev').list({IPAddress}) +OctopoesAPIConnector('http://octopoes', '_dev').list_objects({IPAddress}) ``` ## Querying diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index 68b237e450a..7d7a1008b41 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -250,7 +250,7 @@ def list_origins( task_id: Optional[uuid.UUID] = Query(None), origin_type: Optional[OriginType] = Query(None), ) -> List[Origin]: - return octopoes.origin_repository.list( + return octopoes.origin_repository.list_origins( valid_time, task_id=task_id, source=source, @@ -307,7 +307,7 @@ def list_scan_profiles( valid_time: datetime = Depends(extract_valid_time), scan_profile_type: Optional[str] = Query(None), ) -> List[ScanProfileBase]: - return octopoes.scan_profile_repository.list(scan_profile_type, valid_time) + return octopoes.scan_profile_repository.list_scan_profiles(scan_profile_type, valid_time) @router.put("/scan_profiles", tags=["Scan Profiles"]) diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index 205b6dfc240..991bc9f0ee1 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -88,7 +88,7 @@ def root_health(self) -> ServiceHealth: def health(self) -> ServiceHealth: return ServiceHealth.model_validate_json(self.session.get(f"/{self.client}/health").content) - def list( + def list_objects( self, types: Set[Type[OOI]], valid_time: Optional[datetime] = None, diff --git a/octopoes/octopoes/core/service.py b/octopoes/octopoes/core/service.py index aa6d621bf8f..c632430c636 100644 --- a/octopoes/octopoes/core/service.py +++ b/octopoes/octopoes/core/service.py @@ -123,7 +123,7 @@ def list_ooi( scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, scan_profile_types: Set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOI]: - paginated = self.ooi_repository.list(types, valid_time, limit, offset, scan_levels, scan_profile_types) + paginated = self.ooi_repository.list_oois(types, valid_time, limit, offset, scan_levels, scan_profile_types) self._populate_scan_profiles(paginated.items, valid_time) return paginated @@ -139,7 +139,7 @@ def get_ooi_tree( return tree def _delete_ooi(self, reference: Reference, valid_time: datetime) -> None: - referencing_origins = self.origin_repository.list(valid_time, result=reference) + referencing_origins = self.origin_repository.list_origins(valid_time, result=reference) if not referencing_origins: self.ooi_repository.delete(reference, valid_time) @@ -206,7 +206,7 @@ def check_path_level(path_level: Optional[int], current_level: int): def recalculate_scan_profiles(self, valid_time: datetime) -> None: # fetch all scan profiles - all_scan_profiles = self.scan_profile_repository.list(None, valid_time=valid_time) + all_scan_profiles = self.scan_profile_repository.list_scan_profiles(None, valid_time=valid_time) # cache all declared all_declared_scan_profiles = { @@ -390,7 +390,7 @@ def _on_create_ooi(self, event: OOIDBEvent) -> None: self.origin_parameter_repository.save(origin_parameter, event.valid_time) def _on_update_ooi(self, event: OOIDBEvent) -> None: - inference_origins = self.origin_repository.list(event.valid_time, source=event.new_data.reference) + inference_origins = self.origin_repository.list_origins(event.valid_time, source=event.new_data.reference) inference_params = self.origin_parameter_repository.list_by_reference( event.new_data.reference, valid_time=event.valid_time ) @@ -405,7 +405,7 @@ def _on_delete_ooi(self, event: OOIDBEvent) -> None: reference = event.old_data.reference # delete related origins to which it is a source - origins = self.origin_repository.list(event.valid_time, source=reference) + origins = self.origin_repository.list_origins(event.valid_time, source=reference) for origin in origins: self.origin_repository.delete(origin, event.valid_time) @@ -457,7 +457,7 @@ def _on_delete_origin_parameter(self, event: OriginParameterDBEvent) -> None: return def _run_inferences(self, event: ScanProfileDBEvent) -> None: - inference_origins = self.origin_repository.list(event.valid_time, source=event.reference) + inference_origins = self.origin_repository.list_origins(event.valid_time, source=event.reference) inference_origins = [o for o in inference_origins if o.origin_type == OriginType.INFERENCE] for inference_origin in inference_origins: self._run_inference(inference_origin, event.valid_time) @@ -552,7 +552,9 @@ def recalculate_bits(self) -> int: bit_definitions = get_bit_definitions() for bit_id, bit_definition in bit_definitions.items(): # loop over all oois that are consumed by the bit - for ooi in self.ooi_repository.list({bit_definition.consumes}, limit=20000, valid_time=valid_time).items: + for ooi in self.ooi_repository.list_oois( + {bit_definition.consumes}, limit=20000, valid_time=valid_time + ).items: if not isinstance(ooi, bit_definition.consumes): logger.exception("Wut?") @@ -579,7 +581,7 @@ def recalculate_bits(self) -> int: # TODO: remove all Origins and Origin Parameters, which are no longer in use # rerun all existing bits - origins = self.origin_repository.list(valid_time, origin_type=OriginType.INFERENCE) + origins = self.origin_repository.list_origins(valid_time, origin_type=OriginType.INFERENCE) for origin in origins: self._run_inference(origin, valid_time) bit_counter.update({origin.method}) diff --git a/octopoes/octopoes/repositories/ooi_repository.py b/octopoes/octopoes/repositories/ooi_repository.py index dd3ada84f2b..45c15068e01 100644 --- a/octopoes/octopoes/repositories/ooi_repository.py +++ b/octopoes/octopoes/repositories/ooi_repository.py @@ -89,7 +89,7 @@ def get_neighbours( ) -> Dict[Path, List[OOI]]: raise NotImplementedError - def list( + def list_oois( self, types: Set[Type[OOI]], valid_time: datetime, @@ -266,7 +266,7 @@ def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[st oois = [self.deserialize(x[0]) for x in res] return {ooi.primary_key: ooi for ooi in oois} - def list( + def list_oois( self, types: Set[Type[OOI]], valid_time: datetime, diff --git a/octopoes/octopoes/repositories/origin_repository.py b/octopoes/octopoes/repositories/origin_repository.py index d8740b0bf20..dda58b6c981 100644 --- a/octopoes/octopoes/repositories/origin_repository.py +++ b/octopoes/octopoes/repositories/origin_repository.py @@ -30,7 +30,7 @@ def get(self, origin_id: str, valid_time: datetime) -> Origin: def save(self, origin: Origin, valid_time: datetime) -> None: raise NotImplementedError - def list( + def list_origins( self, valid_time: datetime, *, @@ -66,7 +66,7 @@ def serialize(cls, origin: Origin) -> Dict[str, Any]: def deserialize(cls, data: Dict[str, Any]) -> Origin: return Origin.parse_obj(data) - def list( + def list_origins( self, valid_time: datetime, *, diff --git a/octopoes/octopoes/repositories/scan_profile_repository.py b/octopoes/octopoes/repositories/scan_profile_repository.py index 9a855fbc8dd..70d2474326f 100644 --- a/octopoes/octopoes/repositories/scan_profile_repository.py +++ b/octopoes/octopoes/repositories/scan_profile_repository.py @@ -35,7 +35,7 @@ def save( ) -> None: raise NotImplementedError - def list(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: raise NotImplementedError def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) -> None: @@ -71,7 +71,7 @@ def serialize(cls, scan_profile: ScanProfile) -> Dict[str, Any]: def deserialize(cls, data: Dict[str, Any]) -> ScanProfileBase: return parse_obj_as(ScanProfile, data) - def list(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: where = {"type": self.object_type} if scan_profile_type is not None: where["scan_profile_type"] = scan_profile_type diff --git a/octopoes/tests/conftest.py b/octopoes/tests/conftest.py index 4f0680e01bb..8afe7a64aa2 100644 --- a/octopoes/tests/conftest.py +++ b/octopoes/tests/conftest.py @@ -58,7 +58,7 @@ def save( ) -> None: self.profiles[new_scan_profile.reference] = new_scan_profile - def list(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: if scan_profile_type: return [profile for profile in self.profiles.values() if profile.scan_profile_type == scan_profile_type] else: diff --git a/octopoes/tests/integration/test_api_connector.py b/octopoes/tests/integration/test_api_connector.py index 630afb80bd9..83f2a36c41c 100644 --- a/octopoes/tests/integration/test_api_connector.py +++ b/octopoes/tests/integration/test_api_connector.py @@ -45,9 +45,9 @@ def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, valid_tim [DeclaredScanProfile(reference=ooi.reference, level=ScanLevel.L2) for ooi in hostnames + [network]], valid_time ) - assert octopoes_api_connector.list(types={Network}).count == 1 - assert octopoes_api_connector.list(types={Hostname}).count == 10 - assert octopoes_api_connector.list(types={Network, Hostname}).count == 11 + assert octopoes_api_connector.list_objects(types={Network}).count == 1 + assert octopoes_api_connector.list_objects(types={Hostname}).count == 10 + assert octopoes_api_connector.list_objects(types={Network, Hostname}).count == 11 assert len(octopoes_api_connector.list_origins(task_id=uuid.uuid4())) == 0 origins = octopoes_api_connector.list_origins(task_id=task_id) @@ -64,7 +64,7 @@ def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, valid_tim # Delete even-numbered test hostnames octopoes_api_connector.delete_many([Reference.from_str(f"Hostname|test|test{i}") for i in range(0, 10, 2)]) - assert octopoes_api_connector.list(types={Network, Hostname}).count == 6 + assert octopoes_api_connector.list_objects(types={Network, Hostname}).count == 6 def test_history(octopoes_api_connector: OctopoesAPIConnector): diff --git a/octopoes/tests/integration/test_ooi_repository.py b/octopoes/tests/integration/test_ooi_repository.py index b62bad238c5..e5401bc6d75 100644 --- a/octopoes/tests/integration/test_ooi_repository.py +++ b/octopoes/tests/integration/test_ooi_repository.py @@ -14,9 +14,9 @@ def test_list_oois(xtdb_ooi_repository: XTDBOOIRepository, valid_time: datetime): xtdb_ooi_repository.save(Network(name="test"), valid_time) - assert xtdb_ooi_repository.list({Network}, valid_time) == Paginated(count=0, items=[]) + assert xtdb_ooi_repository.list_oois({Network}, valid_time) == Paginated(count=0, items=[]) xtdb_ooi_repository.session.commit() # list() does not return any OOI without a scan profile - assert xtdb_ooi_repository.list({Network}, valid_time) == Paginated(count=0, items=[]) + assert xtdb_ooi_repository.list_oois({Network}, valid_time) == Paginated(count=0, items=[]) diff --git a/octopoes/tests/test_octopoes_service.py b/octopoes/tests/test_octopoes_service.py index 3a9e593a306..eb452ce64be 100644 --- a/octopoes/tests/test_octopoes_service.py +++ b/octopoes/tests/test_octopoes_service.py @@ -93,7 +93,7 @@ def test_on_update_origin(octopoes_service, valid_time): ) # and the deferenced ooi is no longer referred to by any origins - octopoes_service.origin_repository.list.return_value = [] + octopoes_service.origin_repository.list_origins.return_value = [] octopoes_service.process_event(event) # the ooi should be deleted @@ -105,7 +105,7 @@ def test_on_update_origin(octopoes_service, valid_time): @pytest.mark.parametrize("new_data", [EmptyScanProfile(reference="test_reference"), None]) @pytest.mark.parametrize("old_data", [EmptyScanProfile(reference="test_reference"), None]) def test_on_create_scan_profile(octopoes_service, new_data, old_data, bit_runner: MagicMock): - octopoes_service.origin_repository.list.return_value = [ + octopoes_service.origin_repository.list_origins.return_value = [ Origin( origin_type=OriginType.INFERENCE, method="check-csp-header", diff --git a/rocky/katalogus/views/plugin_detail.py b/rocky/katalogus/views/plugin_detail.py index e47be619d05..58fa705292e 100644 --- a/rocky/katalogus/views/plugin_detail.py +++ b/rocky/katalogus/views/plugin_detail.py @@ -221,7 +221,7 @@ def post(self, request, *args, **kwargs): def get_form_consumable_oois(self): """Get all available OOIS that plugin can consume.""" - return self.octopoes_api_connector.list(self.plugin.consumes, limit=self.limit_ooi_list).items + return self.octopoes_api_connector.list_objects(self.plugin.consumes, limit=self.limit_ooi_list).items def get_form_filtered_consumable_oois(self): """Return a list of oois that is filtered for oois that meets clearance level.""" diff --git a/rocky/reports/report_types/aggregate_organisation_report/report.py b/rocky/reports/report_types/aggregate_organisation_report/report.py index dcac89e824a..521d64aa027 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/report.py +++ b/rocky/reports/report_types/aggregate_organisation_report/report.py @@ -394,7 +394,7 @@ def is_mail_compliant(result): for finding_key in vulnerability_data.get("findings", {}): all_findings.add(finding_key) - config_oois = self.octopoes_api_connector.list(types={Config}, valid_time=valid_time).items + config_oois = self.octopoes_api_connector.list_objects(types={Config}, valid_time=valid_time).items flattened_health = flatten_health(get_rocky_health(self.octopoes_api_connector)) diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index cac0a57d8ef..f051e8f4dda 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -90,7 +90,7 @@ def setup(self, request, *args, **kwargs): def get_oois(self) -> List[OOI]: if "all" in self.selected_oois: - return self.octopoes_api_connector.list( + return self.octopoes_api_connector.list_objects( self.get_ooi_types(), valid_time=self.valid_time, limit=OOIList.HARD_LIMIT, diff --git a/rocky/rocky/views/finding_add.py b/rocky/rocky/views/finding_add.py index 43a8212ddc3..3303339ea2b 100644 --- a/rocky/rocky/views/finding_add.py +++ b/rocky/rocky/views/finding_add.py @@ -128,7 +128,7 @@ def form_valid(self, form): def get_ooi_options(self) -> List[Dict[str, str]]: # Query to render form options ooi_set = set(OOI_TYPES.values()).difference({Finding, FindingType}) - objects = self.octopoes_api_connector.list(ooi_set).items + objects = self.octopoes_api_connector.list_objects(ooi_set).items # generate options options = [(o.primary_key, o.get_ooi_type()) for o in objects] diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index 70a6b873ea4..fe3146c61db 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -163,7 +163,7 @@ def __init__( @cached_property def count(self) -> int: - return self.octopoes_connector.list( + return self.octopoes_connector.list_objects( self.ooi_types, valid_time=self.valid_time, limit=0, @@ -181,7 +181,7 @@ def __getitem__(self, key: Union[int, slice]) -> List[OOI]: if key.stop: limit = key.stop - offset - return self.octopoes_connector.list( + return self.octopoes_connector.list_objects( self.ooi_types, valid_time=self.valid_time, offset=offset, @@ -191,7 +191,7 @@ def __getitem__(self, key: Union[int, slice]) -> List[OOI]: ).items elif isinstance(key, int): - return self.octopoes_connector.list( + return self.octopoes_connector.list_objects( self.ooi_types, valid_time=self.valid_time, offset=key, diff --git a/rocky/tests/objects/test_objects.py b/rocky/tests/objects/test_objects.py index 33d0d261a9c..f96d927c314 100644 --- a/rocky/tests/objects/test_objects.py +++ b/rocky/tests/objects/test_objects.py @@ -24,14 +24,14 @@ def test_ooi_list(rf, client_member, mock_organization_view_octopoes): setup_request(request, client_member.user) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) response = OOIListView.as_view()(request, organization_code=client_member.organization.code) assert response.status_code == 200 - assert mock_organization_view_octopoes().list.call_count == 2 + assert mock_organization_view_octopoes().list_objects.call_count == 2 assertContains(response, "testnetwork") @@ -48,21 +48,21 @@ def test_ooi_list_with_clearance_type_filter_and_clearance_level_filter( setup_request(request, client_member.user) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) response = OOIListView.as_view()(request, organization_code=client_member.organization.code) assert response.status_code == 200 - assert mock_organization_view_octopoes().list.call_count == 2 + assert mock_organization_view_octopoes().list_objects.call_count == 2 - list_call_0 = mock_organization_view_octopoes().list.call_args_list[0] + list_call_0 = mock_organization_view_octopoes().list_objects.call_args_list[0] assert list_call_0.kwargs["limit"] == 0 assert list_call_0.kwargs["scan_level"] == {ScanLevel.L0, ScanLevel.L1} assert list_call_0.kwargs["scan_profile_type"] == {ScanProfileType.DECLARED, ScanProfileType.INHERITED} - list_call_1 = mock_organization_view_octopoes().list.call_args_list[1] + list_call_1 = mock_organization_view_octopoes().list_objects.call_args_list[1] assert list_call_1.kwargs["limit"] == 150 assert list_call_1.kwargs["offset"] == 0 assert list_call_1.kwargs["scan_level"] == {ScanLevel.L0, ScanLevel.L1} @@ -91,7 +91,7 @@ def test_ooi_list_delete_multiple(rf, client_member, mock_organization_view_octo response = OOIListView.as_view()(request, organization_code=client_member.organization.code) assert response.status_code == 200 - assert mock_organization_view_octopoes().list.call_count == 2 + assert mock_organization_view_octopoes().list_objects.call_count == 2 assert mock_organization_view_octopoes().delete_many.call_count == 1 @@ -389,7 +389,7 @@ def test_ooi_list_export_json(rf, client_member, mock_organization_view_octopoes setup_request(request, client_member.user) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) @@ -397,7 +397,7 @@ def test_ooi_list_export_json(rf, client_member, mock_organization_view_octopoes assert response.status_code == 200 assert response.headers["Content-Type"] == "application/json" - assert mock_organization_view_octopoes().list.call_count == 1 + assert mock_organization_view_octopoes().list_objects.call_count == 1 exported_objects = json.loads(response.content.decode()) assert len(exported_objects) == 151 @@ -416,7 +416,7 @@ def test_ooi_list_export_csv(rf, client_member, mock_organization_view_octopoes) setup_request(request, client_member.user) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) @@ -424,7 +424,7 @@ def test_ooi_list_export_csv(rf, client_member, mock_organization_view_octopoes) assert response.status_code == 200 assert response.headers["Content-Type"] == "text/csv" - assert mock_organization_view_octopoes().list.call_count == 1 + assert mock_organization_view_octopoes().list_objects.call_count == 1 exported_objects = list(csv.DictReader(io.StringIO(response.content.decode()), delimiter=",", quotechar='"')) @@ -443,7 +443,7 @@ def test_ooi_list_filtered_export_csv(rf, client_member, mock_organization_view_ setup_request(request, client_member.user) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) @@ -451,9 +451,9 @@ def test_ooi_list_filtered_export_csv(rf, client_member, mock_organization_view_ assert response.status_code == 200 assert response.headers["Content-Type"] == "text/csv" - assert mock_organization_view_octopoes().list.call_count == 1 + assert mock_organization_view_octopoes().list_objects.call_count == 1 - mock_calls = mock_organization_view_octopoes().list.mock_calls + mock_calls = mock_organization_view_octopoes().list_objects.mock_calls assert list(mock_calls[0].kwargs["scan_level"])[0].value == 3 assert mock_calls[0].args[0].pop() == Network assert list(mock_calls[0].kwargs["scan_profile_type"])[0].value == "inherited" @@ -462,7 +462,7 @@ def test_ooi_list_filtered_export_csv(rf, client_member, mock_organization_view_ @pytest.mark.parametrize("member", ["superuser_member", "admin_member", "redteam_member"]) def test_delete_perms_object_list(request, member, rf, mock_organization_view_octopoes): member = request.getfixturevalue(member) - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) @@ -480,7 +480,7 @@ def test_delete_perms_object_list(request, member, rf, mock_organization_view_oc def test_delete_perms_object_list_clients(rf, client_member, mock_organization_view_octopoes): - mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( count=200, items=[Network(name="testnetwork")] * 150 ) diff --git a/rocky/tests/test_groups_and_permissions.py b/rocky/tests/test_groups_and_permissions.py index 25a87586396..507e6c50381 100644 --- a/rocky/tests/test_groups_and_permissions.py +++ b/rocky/tests/test_groups_and_permissions.py @@ -60,7 +60,7 @@ def test_plugin_settings_list_perms( mock_scheduler_client = mocker.patch("katalogus.views.plugin_detail.scheduler") mock_scheduler_client.client.get_lazy_task_list.return_value = lazy_task_list_with_boefje - mock_organization_view_octopoes().list.return_value = Paginated[OOIType](count=1, items=[network]) + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType](count=1, items=[network]) mock_mixins_katalogus().get_plugin.return_value = plugin_details mock_mixins_katalogus().get_plugin_schema.return_value = plugin_schema @@ -94,7 +94,7 @@ def test_plugin_settings_list_perms_2( mock_scheduler_client = mocker.patch("katalogus.views.plugin_detail.scheduler") mock_scheduler_client.client.get_lazy_task_list.return_value = lazy_task_list_with_boefje - mock_organization_view_octopoes().list.return_value = Paginated[OOIType](count=1, items=[network]) + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType](count=1, items=[network]) mock_mixins_katalogus().get_plugin.return_value = plugin_details mock_mixins_katalogus().get_plugin_schema.return_value = plugin_schema diff --git a/rocky/tools/forms/ooi_form.py b/rocky/tools/forms/ooi_form.py index ccb25b98d9f..11abf437a61 100644 --- a/rocky/tools/forms/ooi_form.py +++ b/rocky/tools/forms/ooi_form.py @@ -104,7 +104,7 @@ def generate_select_ooi_field( if initial: select_options.append((initial, initial)) - oois = api_connector.list({related_ooi_type}).items + oois = api_connector.list_objects({related_ooi_type}).items select_options.extend([(ooi.primary_key, ooi.primary_key) for ooi in oois]) if is_multiselect: From ccecfaa32e83b4915a0426db0a2a7b8dcf008230 Mon Sep 17 00:00:00 2001 From: Rieven Date: Thu, 15 Feb 2024 11:48:30 +0100 Subject: [PATCH 44/85] Fix bug get_selection that is now an imported method (#2509) --- rocky/reports/views/aggregate_report.py | 2 +- rocky/reports/views/generate_report.py | 2 +- rocky/reports/views/multi_report.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index bc6c2df3425..05f7086dd86 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -125,7 +125,7 @@ def get(self, request, *args, **kwargs): messages.error(self.request, _("Select at least one report type to proceed.")) if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: - return redirect(reverse("aggregate_report_view", kwargs=kwargs) + self.get_selection()) + return redirect(reverse("aggregate_report_view", kwargs=kwargs) + get_selection(request)) return super().get(request, *args, **kwargs) diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index 958ded2cd1c..0ad3da4cffb 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -116,7 +116,7 @@ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: messages.add_message(self.request, messages.ERROR, error_message) if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: - return redirect(reverse("generate_report_view", kwargs=kwargs) + self.get_selection()) + return redirect(reverse("generate_report_view", kwargs=kwargs) + get_selection(request)) return super().get(request, *args, **kwargs) diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index 7b4c68d409c..e2e5f3691e2 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -105,7 +105,7 @@ def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: messages.error(self.request, _("Select at least one report type to proceed.")) if self.all_plugins_enabled["required"] and self.all_plugins_enabled["optional"]: - return redirect(reverse("multi_report_view", kwargs=kwargs) + self.get_selection()) + return redirect(reverse("multi_report_view", kwargs=kwargs) + get_selection(request)) return super().get(request, *args, **kwargs) From 158a9a23db3fea0a5497a14774cdb4e4ded0f392 Mon Sep 17 00:00:00 2001 From: Rieven Date: Thu, 15 Feb 2024 17:07:15 +0100 Subject: [PATCH 45/85] Align primary button to the left (#2500) --- rocky/account/templates/account_detail.html | 4 +-- rocky/account/templates/password_reset.html | 2 +- rocky/account/templates/recover_email.html | 2 +- .../templates/plugin_settings_add.html | 14 ++++---- .../account/step_4_account_setup_admin.html | 4 +-- .../step_5_account_setup_red_teamer.html | 4 +-- .../account/step_6_account_setup_client.html | 4 +-- .../templates/step_1_introduction.html | 4 +-- .../templates/step_2a_choose_report_info.html | 4 +-- .../templates/step_2b_choose_report_type.html | 12 ++++--- .../step_3a_setup_scan_ooi_info.html | 4 +-- .../step_3c_setup_scan_ooi_detail.html | 2 +- .../step_3d_clearance_level_introduction.html | 4 +-- ...e_trusted_acknowledge_clearance_level.html | 4 +-- .../templates/partials/report_ooi_list.html | 4 +-- rocky/rocky/locale/django.pot | 34 +++++++++---------- .../partials/form/boefje_tiles_form.html | 6 ++-- .../two_factor/core/backup_tokens.html | 2 +- .../two_factor/core/setup_complete.html | 2 +- 19 files changed, 59 insertions(+), 57 deletions(-) diff --git a/rocky/account/templates/account_detail.html b/rocky/account/templates/account_detail.html index 383eb4d7959..95d767d2355 100644 --- a/rocky/account/templates/account_detail.html +++ b/rocky/account/templates/account_detail.html @@ -78,7 +78,7 @@

    {% translate "OOI clearance" %}

    {% translate "You can withdraw this at anytime you like, but know that you won't be able to change clearance levels anymore when you do." %}

    {% blocktranslate asvar btn_text_withdraw_tcl %} - "Withdraw acceptance of level L{{acl}} clearance and responsibility" + Withdraw L{{acl}} clearance and responsibility {% endblocktranslate %} {% include "partials/single_action_form.html" with btn_text=btn_text_withdraw_tcl action="withdraw_acceptance" key="member_id" value=organization_member.id btn_class="ghost" %} @@ -94,7 +94,7 @@

    {% translate "OOI clearance" %}

    {% endblocktranslate %}

    {% blocktranslate asvar btn_text_accept_tcl %} - "Accept level L{{tcl}} clearance and responsibility" + Accept level L{{tcl}} clearance and responsibility {% endblocktranslate %} {% include "partials/single_action_form.html" with btn_text=btn_text_accept_tcl action="accept_clearance" key="member_id" value=organization_member.id btn_class="ghost" %} diff --git a/rocky/account/templates/password_reset.html b/rocky/account/templates/password_reset.html index a6c303f5765..6706e04a911 100644 --- a/rocky/account/templates/password_reset.html +++ b/rocky/account/templates/password_reset.html @@ -22,8 +22,8 @@

    {% translate "Reset password" %}

    {% include "partials/form/fieldset.html" with legend=fieldset_legend fieldset="email" fields=form %}
    - {% translate "Back" %} + {% translate "Back" %}
    diff --git a/rocky/account/templates/recover_email.html b/rocky/account/templates/recover_email.html index c161d4f3dc1..3b4942c8542 100644 --- a/rocky/account/templates/recover_email.html +++ b/rocky/account/templates/recover_email.html @@ -24,10 +24,10 @@

    {% translate "Forgotten email address?" %}

    {% endif %} diff --git a/rocky/katalogus/templates/plugin_settings_add.html b/rocky/katalogus/templates/plugin_settings_add.html index 052eaaedb86..1cb9f85c571 100644 --- a/rocky/katalogus/templates/plugin_settings_add.html +++ b/rocky/katalogus/templates/plugin_settings_add.html @@ -30,13 +30,6 @@

    {% include "partials/form/fieldset.html" with legend=name fields=form %}
    - +
    diff --git a/rocky/onboarding/templates/account/step_4_account_setup_admin.html b/rocky/onboarding/templates/account/step_4_account_setup_admin.html index 0cd1ca9c921..06162b69c34 100644 --- a/rocky/onboarding/templates/account/step_4_account_setup_admin.html +++ b/rocky/onboarding/templates/account/step_4_account_setup_admin.html @@ -29,10 +29,10 @@

    {% translate "Admin account setup" %}

    diff --git a/rocky/onboarding/templates/account/step_5_account_setup_red_teamer.html b/rocky/onboarding/templates/account/step_5_account_setup_red_teamer.html index 74a1828485f..87811d5d4d0 100644 --- a/rocky/onboarding/templates/account/step_5_account_setup_red_teamer.html +++ b/rocky/onboarding/templates/account/step_5_account_setup_red_teamer.html @@ -23,10 +23,10 @@

    {% translate "Red teamer account setup" %}

    diff --git a/rocky/onboarding/templates/account/step_6_account_setup_client.html b/rocky/onboarding/templates/account/step_6_account_setup_client.html index e504137e459..25270aefaef 100644 --- a/rocky/onboarding/templates/account/step_6_account_setup_client.html +++ b/rocky/onboarding/templates/account/step_6_account_setup_client.html @@ -29,10 +29,10 @@

    {% translate "Client account setup (optional)" %}

    {% if organization %} {% endif %} diff --git a/rocky/onboarding/templates/step_1_introduction.html b/rocky/onboarding/templates/step_1_introduction.html index 64edf66f3c8..2677e9635a2 100644 --- a/rocky/onboarding/templates/step_1_introduction.html +++ b/rocky/onboarding/templates/step_1_introduction.html @@ -43,12 +43,12 @@

    {% translate "How does OpenKAT work" %}

    {% endblocktranslate %}

    diff --git a/rocky/onboarding/templates/step_2a_choose_report_info.html b/rocky/onboarding/templates/step_2a_choose_report_info.html index 910bf72a4b1..d5c6cecd67b 100644 --- a/rocky/onboarding/templates/step_2a_choose_report_info.html +++ b/rocky/onboarding/templates/step_2a_choose_report_info.html @@ -54,12 +54,12 @@

    {% translate "Permission" %}

    {% endblocktranslate %}

    diff --git a/rocky/onboarding/templates/step_2b_choose_report_type.html b/rocky/onboarding/templates/step_2b_choose_report_type.html index da3b11bc34c..5e8a4b9f2ef 100644 --- a/rocky/onboarding/templates/step_2b_choose_report_type.html +++ b/rocky/onboarding/templates/step_2b_choose_report_type.html @@ -31,14 +31,16 @@

    {% translate "Choose a report - Type" %}

    {% if organization %} - {% translate "Skip onboarding" %} {% translate "DNS report" %} {% endif %} - Pen test - Mail report - DigiD + Pen test + Mail report + DigiD + {% if organization %} + {% translate "Skip onboarding" %} + {% endif %}
    diff --git a/rocky/onboarding/templates/step_3a_setup_scan_ooi_info.html b/rocky/onboarding/templates/step_3a_setup_scan_ooi_info.html index 4c29369000f..0ea0f6920fc 100644 --- a/rocky/onboarding/templates/step_3a_setup_scan_ooi_info.html +++ b/rocky/onboarding/templates/step_3a_setup_scan_ooi_info.html @@ -43,10 +43,10 @@

    {% translate "Creating, adding and editing objects" %}

    {% if organization %} {% endif %} diff --git a/rocky/onboarding/templates/step_3c_setup_scan_ooi_detail.html b/rocky/onboarding/templates/step_3c_setup_scan_ooi_detail.html index bd8146d4eaa..4c4c7e01ca0 100644 --- a/rocky/onboarding/templates/step_3c_setup_scan_ooi_detail.html +++ b/rocky/onboarding/templates/step_3c_setup_scan_ooi_detail.html @@ -64,11 +64,11 @@

    {% translate "Creating an object" %}

    {% csrf_token %}
    + {% if organization %} {% translate "Skip onboarding" %} {% endif %} -
    diff --git a/rocky/onboarding/templates/step_3d_clearance_level_introduction.html b/rocky/onboarding/templates/step_3d_clearance_level_introduction.html index ca07d5562e7..b79c3fedcc7 100644 --- a/rocky/onboarding/templates/step_3d_clearance_level_introduction.html +++ b/rocky/onboarding/templates/step_3d_clearance_level_introduction.html @@ -57,10 +57,10 @@

    {% translate "How to know required clearance level" %}

    diff --git a/rocky/onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html b/rocky/onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html index 46bad4dc6b8..12e79960406 100644 --- a/rocky/onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html +++ b/rocky/onboarding/templates/step_3e_trusted_acknowledge_clearance_level.html @@ -63,10 +63,10 @@

    {% translate "What is my clearance level?" %}

    {% endblocktranslate %}

    {% endif %} {% endwith %} diff --git a/rocky/reports/templates/partials/report_ooi_list.html b/rocky/reports/templates/partials/report_ooi_list.html index 85cb61d69eb..646f91d7707 100644 --- a/rocky/reports/templates/partials/report_ooi_list.html +++ b/rocky/reports/templates/partials/report_ooi_list.html @@ -25,10 +25,10 @@

    {% if not object_list %}

    {% translate "No objects found." %}

    {% else %}
    \n" "Language-Team: LANGUAGE \n" @@ -391,12 +391,12 @@ msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Back" +msgid "Send" msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Send" +msgid "Back" msgstr "" #: account/templates/password_reset_confirm.html @@ -470,11 +470,11 @@ msgid "Please contact the system administrator." msgstr "" #: account/templates/recover_email.html -msgid "Back to Home" +msgid "Back to login" msgstr "" #: account/templates/recover_email.html -msgid "Back to login" +msgid "Back to Home" msgstr "" #: account/templates/registration_email.html @@ -1640,11 +1640,11 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting\n" +" Add setting and enable boefje\n" " " msgid_plural "" "\n" -" Add settings\n" +" Add settings and enable boefje\n" " " msgstr[0] "" msgstr[1] "" @@ -1652,12 +1652,12 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting and enable boefje\n" -" " +" Add setting\n" +" " msgid_plural "" "\n" -" Add settings and enable boefje\n" -" " +" Add settings\n" +" " msgstr[0] "" msgstr[1] "" @@ -2038,13 +2038,13 @@ msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -msgid "Go back to previous step" +msgid "Skip this step" msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -msgid "Skip this step" +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" msgstr "" #: onboarding/templates/account/step_5_account_setup_red_teamer.html @@ -6102,12 +6102,12 @@ msgid "You don't have any backup codes yet." msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -#: rocky/templates/two_factor/core/setup_complete.html -msgid "Back to Account Security" +msgid "Generate Tokens" msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" msgstr "" #: rocky/templates/two_factor/core/login.html diff --git a/rocky/rocky/templates/partials/form/boefje_tiles_form.html b/rocky/rocky/templates/partials/form/boefje_tiles_form.html index 2ca4ee53948..29637085ea0 100644 --- a/rocky/rocky/templates/partials/form/boefje_tiles_form.html +++ b/rocky/rocky/templates/partials/form/boefje_tiles_form.html @@ -8,12 +8,12 @@ {% for choices in checkbox_group_table_form %}{{ choices }}{% endfor %} {% endif %}
    + {% if skip_onboarding == "yes" and organization.code %} {% translate "Skip onboarding" %} {% endif %} -
    diff --git a/rocky/rocky/templates/two_factor/core/backup_tokens.html b/rocky/rocky/templates/two_factor/core/backup_tokens.html index 12fa4f864ad..aad4a66a223 100644 --- a/rocky/rocky/templates/two_factor/core/backup_tokens.html +++ b/rocky/rocky/templates/two_factor/core/backup_tokens.html @@ -30,8 +30,8 @@

    {% include "partials/form/fieldset.html" with fields=form %} {% endblock content %} diff --git a/rocky/rocky/templates/two_factor/core/setup_complete.html b/rocky/rocky/templates/two_factor/core/setup_complete.html index 006c3678299..7a24f5519ea 100644 --- a/rocky/rocky/templates/two_factor/core/setup_complete.html +++ b/rocky/rocky/templates/two_factor/core/setup_complete.html @@ -11,8 +11,8 @@

    {% trans "Congratulations, you've successfully enabled two-factor authentication." %}

    {% if not phone_methods %} {% else %}

    From f8fc64669b308709f7400c4f235ebf43865dba41 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Fri, 16 Feb 2024 15:04:07 +0100 Subject: [PATCH 46/85] Update typing to Python 3.10 style (#2491) --- boefjes/boefjes/api.py | 7 +- boefjes/boefjes/app.py | 13 +- boefjes/boefjes/clients/bytes_client.py | 11 +- boefjes/boefjes/clients/scheduler_client.py | 17 +- boefjes/boefjes/config.py | 14 +- boefjes/boefjes/job_handler.py | 9 +- boefjes/boefjes/job_models.py | 33 ++- boefjes/boefjes/katalogus/api.py | 6 +- boefjes/boefjes/katalogus/clients.py | 12 +- .../katalogus/dependencies/organisations.py | 2 +- .../boefjes/katalogus/dependencies/plugins.py | 27 +-- .../katalogus/dependencies/repositories.py | 2 +- boefjes/boefjes/katalogus/local_repository.py | 18 +- boefjes/boefjes/katalogus/models.py | 36 ++-- .../katalogus/routers/organisations.py | 4 +- boefjes/boefjes/katalogus/routers/plugins.py | 7 +- .../boefjes/katalogus/routers/repositories.py | 4 +- boefjes/boefjes/katalogus/routers/settings.py | 6 +- .../boefjes/katalogus/storage/diskcache.py | 9 +- .../boefjes/katalogus/storage/interfaces.py | 19 +- boefjes/boefjes/katalogus/storage/memory.py | 24 +-- .../kat_test_2/kat_test_3/normalize.py | 4 +- .../kat_test/kat_test_2/main.py | 4 +- .../tests/boefjes_test_dir/kat_test/main.py | 4 +- .../boefjes_test_dir/kat_test/normalize.py | 4 +- boefjes/boefjes/katalogus/types.py | 8 +- boefjes/boefjes/local.py | 10 +- boefjes/boefjes/plugins/helpers.py | 4 +- .../plugins/kat_adr_finding_types/main.py | 3 +- .../kat_adr_finding_types/normalize.py | 4 +- .../boefjes/plugins/kat_adr_validator/main.py | 4 +- .../plugins/kat_adr_validator/normalize.py | 4 +- .../plugins/kat_answer_parser/normalize.py | 4 +- .../kat_binaryedge/containers/normalize.py | 4 +- .../kat_binaryedge/databases/normalize.py | 4 +- .../kat_binaryedge/http_web/normalize.py | 4 +- .../boefjes/plugins/kat_binaryedge/main.py | 5 +- .../message_queues/normalize.py | 4 +- .../kat_binaryedge/protocols/normalize.py | 4 +- .../remote_desktop/normalize.py | 4 +- .../service_identification/normalize.py | 4 +- .../kat_binaryedge/services/normalize.py | 4 +- .../plugins/kat_burpsuite/normalize.py | 4 +- .../boefjes/plugins/kat_calvin/normalize.py | 4 +- boefjes/boefjes/plugins/kat_censys/main.py | 3 +- .../boefjes/plugins/kat_censys/normalize.py | 4 +- boefjes/boefjes/plugins/kat_crt_sh/main.py | 3 +- .../boefjes/plugins/kat_crt_sh/normalize.py | 4 +- .../plugins/kat_cve_2023_34039/main.py | 3 +- .../plugins/kat_cve_2023_34039/normalize.py | 2 +- .../plugins/kat_cve_2023_35078/main.py | 3 +- .../plugins/kat_cve_2023_35078/normalize.py | 10 +- .../plugins/kat_cve_finding_types/main.py | 3 +- .../kat_cve_finding_types/normalize.py | 4 +- .../plugins/kat_cwe_finding_types/main.py | 3 +- .../kat_cwe_finding_types/normalize.py | 4 +- boefjes/boefjes/plugins/kat_dicom/main.py | 3 +- .../boefjes/plugins/kat_dicom/normalize.py | 4 +- boefjes/boefjes/plugins/kat_dns/main.py | 5 +- boefjes/boefjes/plugins/kat_dns/normalize.py | 12 +- boefjes/boefjes/plugins/kat_dns_zone/main.py | 3 +- .../boefjes/plugins/kat_dns_zone/normalize.py | 4 +- boefjes/boefjes/plugins/kat_dnssec/main.py | 3 +- .../boefjes/plugins/kat_dnssec/normalize.py | 4 +- .../boefjes/plugins/kat_external_db/main.py | 3 +- .../plugins/kat_external_db/normalize.py | 4 +- boefjes/boefjes/plugins/kat_fierce/main.py | 3 +- .../boefjes/plugins/kat_fierce/normalize.py | 4 +- .../boefjes/plugins/kat_green_hosting/main.py | 4 +- .../plugins/kat_green_hosting/normalize.py | 4 +- .../plugins/kat_kat_finding_types/main.py | 3 +- .../kat_kat_finding_types/normalize.py | 4 +- boefjes/boefjes/plugins/kat_leakix/main.py | 3 +- .../boefjes/plugins/kat_leakix/normalize.py | 5 +- boefjes/boefjes/plugins/kat_log4shell/main.py | 9 +- .../plugins/kat_manual/csv/normalize.py | 6 +- .../kat_manual/single_ooi/normalize.py | 4 +- .../boefjes/plugins/kat_manyportsopen/main.py | 3 +- .../plugins/kat_manyportsopen/normalize.py | 4 +- boefjes/boefjes/plugins/kat_masscan/main.py | 6 +- .../boefjes/plugins/kat_masscan/normalize.py | 4 +- .../boefjes/plugins/kat_nmap_ip_range/main.py | 7 +- .../boefjes/plugins/kat_nmap_ports/main.py | 7 +- boefjes/boefjes/plugins/kat_nmap_tcp/main.py | 7 +- .../boefjes/plugins/kat_nmap_tcp/normalize.py | 4 +- boefjes/boefjes/plugins/kat_nmap_udp/main.py | 7 +- .../boefjes/plugins/kat_nuclei_cve/main.py | 4 +- .../plugins/kat_nuclei_cve/normalize.py | 4 +- .../plugins/kat_nuclei_exposed_panels/main.py | 4 +- .../kat_nuclei_exposed_panels/normalize.py | 4 +- .../plugins/kat_nuclei_take_over/main.py | 4 +- .../plugins/kat_nuclei_take_over/normalize.py | 4 +- boefjes/boefjes/plugins/kat_rdns/main.py | 4 +- boefjes/boefjes/plugins/kat_rdns/normalize.py | 4 +- .../plugins/kat_report_data/normalize.py | 4 +- .../kat_retirejs_finding_types/main.py | 4 +- .../kat_retirejs_finding_types/normalize.py | 6 +- boefjes/boefjes/plugins/kat_rpki/main.py | 5 +- boefjes/boefjes/plugins/kat_rpki/normalize.py | 4 +- .../kat_security_txt_downloader/main.py | 3 +- .../kat_security_txt_downloader/normalize.py | 4 +- boefjes/boefjes/plugins/kat_shodan/main.py | 3 +- .../boefjes/plugins/kat_shodan/normalize.py | 4 +- .../boefjes/plugins/kat_snyk/check_version.py | 3 +- boefjes/boefjes/plugins/kat_snyk/main.py | 3 +- boefjes/boefjes/plugins/kat_snyk/normalize.py | 4 +- .../plugins/kat_snyk_finding_types/main.py | 3 +- .../kat_snyk_finding_types/normalize.py | 4 +- .../plugins/kat_ssl_certificates/main.py | 4 +- .../plugins/kat_ssl_certificates/normalize.py | 6 +- boefjes/boefjes/plugins/kat_ssl_scan/main.py | 4 +- .../boefjes/plugins/kat_ssl_scan/normalize.py | 4 +- .../plugins/kat_testssl_sh_ciphers/main.py | 3 +- .../kat_testssl_sh_ciphers/normalize.py | 6 +- .../check_images/normalize.py | 4 +- .../find_images_in_html/normalize.py | 4 +- .../kat_webpage_analysis/headers/normalize.py | 4 +- .../plugins/kat_webpage_analysis/main.py | 3 +- .../plugins/kat_webpage_capture/main.py | 6 +- .../plugins/kat_website_software/main.py | 3 +- .../plugins/kat_website_software/normalize.py | 4 +- boefjes/boefjes/plugins/kat_wpscan/main.py | 3 +- .../boefjes/plugins/kat_wpscan/normalize.py | 4 +- .../boefjes/plugins/pdio_subfinder/main.py | 4 +- .../plugins/pdio_subfinder/normalize.py | 4 +- boefjes/boefjes/runtime_interfaces.py | 5 +- boefjes/boefjes/sql/db.py | 5 +- boefjes/boefjes/sql/organisation_storage.py | 5 +- boefjes/boefjes/sql/plugin_enabled_storage.py | 7 +- boefjes/boefjes/sql/repository_storage.py | 3 +- boefjes/boefjes/sql/session.py | 3 +- boefjes/boefjes/sql/setting_storage.py | 5 +- boefjes/tests/conftest.py | 23 +-- boefjes/tests/loading.py | 3 +- .../normalize.py | 4 +- .../normalize.py | 4 +- boefjes/tests/modules/dummy_boefje/main.py | 4 +- .../modules/dummy_boefje_environment/main.py | 3 +- .../main.py | 3 +- .../dummy_boefje_invalid_signature/main.py | 3 +- .../dummy_boefje_runtime_exception/main.py | 4 +- .../modules/dummy_normalizer/normalize.py | 4 +- boefjes/tests/test_manual.py | 3 +- boefjes/tests/test_tasks.py | 9 +- bytes/bytes/api/metrics.py | 3 +- bytes/bytes/api/models.py | 4 +- bytes/bytes/api/root.py | 8 +- bytes/bytes/api/router.py | 45 ++-- bytes/bytes/auth.py | 5 +- bytes/bytes/config.py | 22 +- bytes/bytes/database/sql_meta_repository.py | 28 +-- bytes/bytes/models.py | 30 +-- bytes/bytes/repositories/hash_repository.py | 4 +- bytes/bytes/repositories/meta_repository.py | 37 ++-- bytes/bytes/timestamping/in_memory.py | 7 +- bytes/bytes/timestamping/pastebin.py | 4 +- bytes/bytes/timestamping/rfc3161.py | 3 +- bytes/tests/client.py | 19 +- bytes/tests/conftest.py | 2 +- bytes/tests/loading.py | 6 +- keiko/keiko/api.py | 3 +- keiko/keiko/health.py | 6 +- keiko/keiko/keiko.py | 6 +- keiko/keiko/settings.py | 3 +- keiko/keiko/templates.py | 6 +- keiko/templates/bevindingenrapport/model.py | 43 ++-- keiko/templates/dns/model.py | 5 +- .../fixtures/templates/template1/model.py | 3 +- mula/scheduler/app.py | 13 +- mula/scheduler/config/settings.py | 14 +- mula/scheduler/connectors/connector.py | 2 +- .../connectors/listeners/listeners.py | 8 +- mula/scheduler/connectors/services/bytes.py | 9 +- .../connectors/services/katalogus.py | 17 +- .../scheduler/connectors/services/octopoes.py | 12 +- .../scheduler/connectors/services/services.py | 17 +- mula/scheduler/models/boefje.py | 14 +- mula/scheduler/models/health.py | 8 +- mula/scheduler/models/normalizer.py | 7 +- mula/scheduler/models/ooi.py | 5 +- mula/scheduler/models/plugin.py | 23 +-- mula/scheduler/models/queue.py | 11 +- mula/scheduler/models/raw_data.py | 7 +- mula/scheduler/models/request.py | 4 +- mula/scheduler/models/scheduler.py | 10 +- mula/scheduler/models/tasks.py | 10 +- mula/scheduler/queues/pq.py | 12 +- mula/scheduler/schedulers/boefje.py | 10 +- mula/scheduler/schedulers/normalizer.py | 12 +- mula/scheduler/schedulers/scheduler.py | 23 ++- mula/scheduler/server/pagination.py | 14 +- mula/scheduler/server/server.py | 36 ++-- mula/scheduler/storage/filters/casting.py | 2 +- mula/scheduler/storage/filters/comparison.py | 4 +- mula/scheduler/storage/filters/filters.py | 8 +- mula/scheduler/storage/pq_store.py | 17 +- mula/scheduler/storage/task_store.py | 33 ++- mula/scheduler/utils/dict_utils.py | 9 +- mula/scheduler/utils/thread.py | 19 +- mula/tests/factories/boefje.py | 8 +- mula/tests/factories/plugin.py | 6 +- mula/tests/factories/raw_data.py | 4 +- mula/tests/mocks/services.py | 8 +- mula/tests/scripts/load.py | 6 +- mula/tests/utils/functions.py | 8 +- .../url_classification_mock.py | 4 +- .../ask_port_specification.py | 6 +- .../bits/check_csp_header/check_csp_header.py | 4 +- .../check_cve_2021_41773.py | 4 +- .../check_hsts_header/check_hsts_header.py | 4 +- .../cipher_classification.py | 6 +- .../default_findingtype_risk.py | 4 +- octopoes/bits/definitions.py | 11 +- .../dns_alias_resolving.py | 4 +- octopoes/bits/dns_resolving/dns_resolving.py | 6 +- .../expiring_certificate.py | 4 +- .../https_availability/https_availability.py | 4 +- .../bits/https_redirect/https_redirect.py | 4 +- octopoes/bits/internetnl/internetnl.py | 4 +- .../bits/ipv6_nameservers/ipv6_nameservers.py | 6 +- .../bits/ipv6_webservers/ipv6_webservers.py | 4 +- octopoes/bits/missing_caa/missing_caa.py | 6 +- .../missing_certificate.py | 4 +- octopoes/bits/missing_dkim/missing_dkim.py | 6 +- octopoes/bits/missing_dmarc/missing_dmarc.py | 6 +- .../bits/missing_headers/missing_headers.py | 4 +- octopoes/bits/missing_spf/missing_spf.py | 6 +- octopoes/bits/nxdomain_flag/nxdomain_flag.py | 4 +- .../nxdomain_header_flag.py | 4 +- .../bits/oois_in_headers/oois_in_headers.py | 4 +- .../port_classification_ip.py | 4 +- octopoes/bits/port_common/port_common.py | 6 +- .../resource_discovery/resource_discovery.py | 6 +- octopoes/bits/retire_js/retire_js.py | 10 +- octopoes/bits/runner.py | 7 +- octopoes/bits/spf_discovery/spf_discovery.py | 4 +- .../ssl_certificate_hostname.py | 8 +- .../two_ipv6_nameservers.py | 6 +- .../url_classification/url_classification.py | 4 +- octopoes/bits/url_discovery/url_discovery.py | 4 +- .../website_discovery/website_discovery.py | 4 +- octopoes/octopoes/api/models.py | 20 +- octopoes/octopoes/api/router.py | 56 ++--- octopoes/octopoes/config/settings.py | 16 +- octopoes/octopoes/connector/katalogus.py | 4 +- octopoes/octopoes/connector/octopoes.py | 77 ++++--- octopoes/octopoes/core/service.py | 46 ++--- octopoes/octopoes/events/events.py | 23 +-- octopoes/octopoes/events/manager.py | 4 +- octopoes/octopoes/models/__init__.py | 35 ++-- octopoes/octopoes/models/explanation.py | 4 +- octopoes/octopoes/models/ooi/certificate.py | 16 +- octopoes/octopoes/models/ooi/config.py | 4 +- octopoes/octopoes/models/ooi/dns/records.py | 22 +- octopoes/octopoes/models/ooi/dns/zone.py | 13 +- .../octopoes/models/ooi/email_security.py | 10 +- octopoes/octopoes/models/ooi/findings.py | 22 +- octopoes/octopoes/models/ooi/monitoring.py | 4 +- octopoes/octopoes/models/ooi/network.py | 25 ++- octopoes/octopoes/models/ooi/reports.py | 6 +- octopoes/octopoes/models/ooi/service.py | 4 +- octopoes/octopoes/models/ooi/software.py | 6 +- octopoes/octopoes/models/ooi/web.py | 14 +- octopoes/octopoes/models/origin.py | 7 +- octopoes/octopoes/models/pagination.py | 4 +- octopoes/octopoes/models/path.py | 17 +- octopoes/octopoes/models/persistence.py | 8 +- octopoes/octopoes/models/transaction.py | 3 +- octopoes/octopoes/models/tree.py | 8 +- octopoes/octopoes/models/types.py | 194 ++++++++---------- .../octopoes/repositories/ooi_repository.py | 118 +++++------ .../origin_parameter_repository.py | 12 +- .../repositories/origin_repository.py | 26 +-- .../repositories/scan_profile_repository.py | 18 +- octopoes/octopoes/tasks/tasks.py | 3 +- octopoes/octopoes/xtdb/__init__.py | 7 +- octopoes/octopoes/xtdb/client.py | 45 ++-- octopoes/octopoes/xtdb/query.py | 25 ++- octopoes/octopoes/xtdb/query_builder.py | 14 +- .../octopoes/xtdb/related_field_generator.py | 12 +- octopoes/tests/conftest.py | 14 +- .../tests/integration/test_api_connector.py | 3 +- octopoes/tests/mocks/mock_ooi_types.py | 36 ++-- octopoes/tests/test_ooi_repository.py | 4 +- pyproject.toml | 4 - rocky/account/mixins.py | 9 +- rocky/account/models.py | 9 +- rocky/crisis_room/views.py | 13 +- rocky/fmea/views/fmea_affected_objects.py | 6 +- rocky/fmea/views/fmea_analytics.py | 6 +- rocky/fmea/views/fmea_failure_mode.py | 8 +- rocky/fmea/views/fmea_failure_mode_effect.py | 8 +- rocky/katalogus/client.py | 53 +++-- rocky/katalogus/forms/plugin_settings.py | 4 +- rocky/katalogus/utils.py | 4 +- rocky/katalogus/views/katalogus.py | 4 +- rocky/katalogus/views/mixins.py | 9 +- rocky/katalogus/views/plugin_detail.py | 4 +- .../katalogus/views/plugin_enable_disable.py | 3 +- rocky/onboarding/views.py | 16 +- rocky/reports/forms.py | 6 +- .../aggregate_organisation_report/report.py | 5 +- rocky/reports/report_types/definitions.py | 22 +- .../reports/report_types/dns_report/report.py | 4 +- rocky/reports/report_types/helpers.py | 17 +- .../report_types/ipv6_report/report.py | 4 +- .../report_types/mail_report/report.py | 6 +- .../multi_organization_report/report.py | 6 +- .../report_types/name_server_report/report.py | 6 +- .../report_types/open_ports_report/report.py | 4 +- .../report_types/rpki_report/report.py | 4 +- .../safe_connections_report/report.py | 4 +- .../report_types/systems_report/report.py | 4 +- .../reports/report_types/tls_report/report.py | 4 +- .../vulnerability_report/report.py | 8 +- .../report_types/web_system_report/report.py | 6 +- rocky/reports/utils.py | 5 +- rocky/reports/views/aggregate_report.py | 4 +- rocky/reports/views/base.py | 22 +- rocky/reports/views/generate_report.py | 4 +- rocky/reports/views/multi_report.py | 4 +- rocky/rocky/bytes_client.py | 15 +- rocky/rocky/health.py | 6 +- rocky/rocky/keiko.py | 27 +-- rocky/rocky/scheduler.py | 66 +++--- rocky/rocky/views/bytes_raw.py | 3 +- rocky/rocky/views/finding_add.py | 3 +- rocky/rocky/views/finding_list.py | 8 +- rocky/rocky/views/health.py | 3 +- rocky/rocky/views/mixins.py | 41 ++-- rocky/rocky/views/ooi_add.py | 3 +- rocky/rocky/views/ooi_detail.py | 3 +- .../rocky/views/ooi_detail_related_object.py | 19 +- rocky/rocky/views/ooi_findings.py | 4 +- rocky/rocky/views/ooi_list.py | 7 +- rocky/rocky/views/ooi_report.py | 12 +- rocky/rocky/views/ooi_tree.py | 4 +- rocky/rocky/views/ooi_view.py | 16 +- rocky/rocky/views/organization_list.py | 4 +- rocky/rocky/views/scan_profile.py | 6 +- rocky/rocky/views/scans.py | 3 +- rocky/rocky/views/upload_csv.py | 8 +- rocky/tests/conftest.py | 31 ++- rocky/tests/test_api_organization.py | 4 +- rocky/tools/add_ooi_information.py | 15 +- rocky/tools/forms/base.py | 20 +- rocky/tools/forms/boefje.py | 10 +- rocky/tools/forms/finding_type.py | 5 +- rocky/tools/forms/ooi.py | 10 +- rocky/tools/forms/ooi_form.py | 20 +- rocky/tools/forms/settings.py | 10 +- rocky/tools/forms/upload_raw.py | 4 +- .../management/commands/generate_report.py | 6 +- .../management/commands/setup_test_users.py | 6 +- rocky/tools/models.py | 4 +- rocky/tools/ooi_helpers.py | 33 ++- rocky/tools/templatetags/ooi_extra.py | 6 +- rocky/tools/view_helpers.py | 12 +- 358 files changed, 1644 insertions(+), 1876 deletions(-) diff --git a/boefjes/boefjes/api.py b/boefjes/boefjes/api.py index c231fd7bd95..ab6558e47bb 100644 --- a/boefjes/boefjes/api.py +++ b/boefjes/boefjes/api.py @@ -3,7 +3,6 @@ import multiprocessing from datetime import datetime, timezone from enum import Enum -from typing import List, Optional from uuid import UUID from fastapi import Depends, FastAPI, HTTPException, Response @@ -62,14 +61,14 @@ class StatusEnum(str, Enum): class File(BaseModel): - name: Optional[str] = None + name: str | None = None content: str = Field(..., contentEncoding="base64") - tags: Optional[List[str]] = None + tags: list[str] | None = None class BoefjeOutput(BaseModel): status: StatusEnum - files: Optional[List[File]] = None + files: list[File] | None = None def get_scheduler_client(): diff --git a/boefjes/boefjes/app.py b/boefjes/boefjes/app.py index b7e1274264b..b969fd8497c 100644 --- a/boefjes/boefjes/app.py +++ b/boefjes/boefjes/app.py @@ -5,7 +5,6 @@ import sys import time from queue import Queue -from typing import Dict, List, Optional, Tuple from pydantic import ValidationError from requests import HTTPError @@ -41,7 +40,7 @@ def __init__( self.task_queue = manager.Queue() # multiprocessing.Queue() will not work on macOS, see mp.Queue.qsize() self.handling_tasks = manager.dict() - self.workers: List[mp.Process] = [] + self.workers: list[mp.Process] = [] logger.setLevel(log_level) @@ -184,16 +183,16 @@ def _cleanup_pending_worker_task(self, worker: mp.Process) -> None: except HTTPError: logger.exception("Could not get scheduler task[id=%s]", handling_task_id) - def _worker_args(self) -> Tuple: + def _worker_args(self) -> tuple: return self.task_queue, self.item_handler, self.scheduler_client, self.handling_tasks - def exit(self, queue_type: WorkerManager.Queue, signum: Optional[int] = None): + def exit(self, queue_type: WorkerManager.Queue, signum: int | None = None): try: if signum: logger.info("Received %s, exiting", signal.Signals(signum).name) if not self.task_queue.empty(): - items: List[QueuePrioritizedItem] = [self.task_queue.get() for _ in range(self.task_queue.qsize())] + items: list[QueuePrioritizedItem] = [self.task_queue.get() for _ in range(self.task_queue.qsize())] for p_item in items: try: @@ -224,7 +223,7 @@ def exit(self, queue_type: WorkerManager.Queue, signum: Optional[int] = None): sys.exit() -def _format_exit_code(exitcode: Optional[int]) -> str: +def _format_exit_code(exitcode: int | None) -> str: if exitcode is None or exitcode >= 0: return f"exitcode={exitcode}" @@ -235,7 +234,7 @@ def _start_working( task_queue: mp.Queue, handler: Handler, scheduler_client: SchedulerClientInterface, - handling_tasks: Dict[int, str], + handling_tasks: dict[int, str], ): logger.info("Started listening for tasks from worker[pid=%s]", os.getpid()) diff --git a/boefjes/boefjes/clients/bytes_client.py b/boefjes/boefjes/clients/bytes_client.py index 4544560e7b1..94430f2b8d9 100644 --- a/boefjes/boefjes/clients/bytes_client.py +++ b/boefjes/boefjes/clients/bytes_client.py @@ -1,7 +1,8 @@ import logging import typing +from collections.abc import Callable from functools import wraps -from typing import Any, Callable, Dict, FrozenSet, Union +from typing import Any from uuid import UUID import requests @@ -22,7 +23,7 @@ def __init__(self, base_url: str): self._base_url = base_url.rstrip("/") self.headers["User-Agent"] = f"bytes-api-client/{BYTES_API_CLIENT_VERSION}" - def request(self, method: str, url: Union[str, bytes], **kwargs) -> requests.Response: # type: ignore + def request(self, method: str, url: str | bytes, **kwargs) -> requests.Response: # type: ignore url = self._base_url + str(url) return super().request(method, url, **kwargs) @@ -58,7 +59,7 @@ def __init__(self, base_url: str, username: str, password: str): "username": username, "password": password, } - self.headers: Dict[str, str] = {} + self.headers: dict[str, str] = {} def login(self) -> None: self.headers = self._get_authentication_headers() @@ -74,7 +75,7 @@ def _verify_response(response: requests.Response) -> None: logger.debug(response.text) raise - def _get_authentication_headers(self) -> Dict[str, str]: + def _get_authentication_headers(self) -> dict[str, str]: return {"Authorization": f"bearer {self._get_token()}"} def _get_token(self) -> str: @@ -106,7 +107,7 @@ def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: self._verify_response(response) @retry_with_login - def save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: FrozenSet[str] = frozenset()) -> UUID: + def save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: frozenset[str] = frozenset()) -> UUID: headers = {"content-type": "application/octet-stream"} headers.update(self.headers) diff --git a/boefjes/boefjes/clients/scheduler_client.py b/boefjes/boefjes/clients/scheduler_client.py index d4861346ee8..370148a437d 100644 --- a/boefjes/boefjes/clients/scheduler_client.py +++ b/boefjes/boefjes/clients/scheduler_client.py @@ -2,7 +2,6 @@ import logging import uuid from enum import Enum -from typing import List, Optional, Union import requests from pydantic import BaseModel, TypeAdapter @@ -26,8 +25,8 @@ class QueuePrioritizedItem(BaseModel): id: uuid.UUID priority: int - hash: Optional[str] = None - data: Union[BoefjeMeta, NormalizerMeta] + hash: str | None = None + data: BoefjeMeta | NormalizerMeta class TaskStatus(Enum): @@ -52,10 +51,10 @@ class Task(BaseModel): class SchedulerClientInterface: - def get_queues(self) -> List[Queue]: + def get_queues(self) -> list[Queue]: raise NotImplementedError() - def pop_item(self, queue: str) -> Optional[QueuePrioritizedItem]: + def pop_item(self, queue: str) -> QueuePrioritizedItem | None: raise NotImplementedError() def patch_task(self, task_id: uuid.UUID, status: TaskStatus) -> None: @@ -91,17 +90,17 @@ def __init__(self, base_url: str): def _verify_response(response: requests.Response) -> None: response.raise_for_status() - def get_queues(self) -> List[Queue]: + def get_queues(self) -> list[Queue]: response = self._session.get(f"{self.base_url}/queues") self._verify_response(response) - return TypeAdapter(List[Queue]).validate_json(response.content) + return TypeAdapter(list[Queue]).validate_json(response.content) - def pop_item(self, queue: str) -> Optional[QueuePrioritizedItem]: + def pop_item(self, queue: str) -> QueuePrioritizedItem | None: response = self._session.post(f"{self.base_url}/queues/{queue}/pop") self._verify_response(response) - return TypeAdapter(Optional[QueuePrioritizedItem]).validate_json(response.content) + return TypeAdapter(QueuePrioritizedItem | None).validate_json(response.content) def push_item(self, queue_id: str, p_item: QueuePrioritizedItem) -> None: response = self._session.post(f"{self.base_url}/queues/{queue_id}/push", data=p_item.json()) diff --git a/boefjes/boefjes/config.py b/boefjes/boefjes/config.py index ea21fa1469c..df4764e22a8 100644 --- a/boefjes/boefjes/config.py +++ b/boefjes/boefjes/config.py @@ -1,7 +1,7 @@ import logging import os from pathlib import Path -from typing import Any, Dict, Optional, Tuple, Type +from typing import Any from pydantic import AmqpDsn, AnyHttpUrl, Field, FilePath, IPvAnyAddress, PostgresDsn, conint from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict @@ -23,8 +23,8 @@ class BackwardsCompatibleEnvSettings(EnvSettingsSource): "LOG_CFG": "BOEFJES_LOG_CFG", } - def __call__(self) -> Dict[str, Any]: - d: Dict[str, Any] = {} + def __call__(self) -> dict[str, Any]: + d: dict[str, Any] = {} env_vars = {k.lower(): v for k, v in os.environ.items()} env_prefix = self.settings_cls.model_config.get("env_prefix", "").lower() @@ -52,7 +52,7 @@ class Settings(BaseSettings): "1.1.1.1", description="Name server used for remote DNS resolution in the boefje runner" ) - scan_profile_whitelist: Dict[str, conint(strict=True, ge=0, le=4)] = Field( # type: ignore + scan_profile_whitelist: dict[str, conint(strict=True, ge=0, le=4)] = Field( # type: ignore default_factory=dict, description="Whitelist for normalizer ids allowed to produce scan profiles, including a maximum level.", examples=['{"kat_external_db_normalize": 3, "kat_dns_normalize": 1}'], @@ -105,7 +105,7 @@ class Settings(BaseSettings): ..., examples=["secret"], description="Bytes JWT login password", validation_alias="BYTES_PASSWORD" ) - span_export_grpc_endpoint: Optional[AnyHttpUrl] = Field( + span_export_grpc_endpoint: AnyHttpUrl | None = Field( None, description="OpenTelemetry endpoint", validation_alias="SPAN_EXPORT_GRPC_ENDPOINT" ) @@ -114,12 +114,12 @@ class Settings(BaseSettings): @classmethod def settings_customise_sources( cls, - settings_cls: Type[BaseSettings], + settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, - ) -> Tuple[PydanticBaseSettingsSource, ...]: + ) -> tuple[PydanticBaseSettingsSource, ...]: backwards_compatible_settings = BackwardsCompatibleEnvSettings(settings_cls) return env_settings, init_settings, file_secret_settings, backwards_compatible_settings diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index b369c109006..10b97b46e52 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -1,9 +1,10 @@ import logging import os import traceback +from collections.abc import Callable from datetime import datetime, timedelta, timezone from enum import Enum -from typing import Any, Callable, Dict, List, Optional +from typing import Any import requests from pydantic.tools import parse_obj_as @@ -67,7 +68,7 @@ def _serialize_value(value: Any, required: bool) -> Any: return None if isinstance(value, Enum): return value.value - if isinstance(value, (int, float)): + if isinstance(value, int | float): return value else: return str(value) @@ -86,7 +87,7 @@ def get_octopoes_api_connector(org_code: str) -> OctopoesAPIConnector: return OctopoesAPIConnector(str(settings.octopoes_api), org_code) -def get_environment_settings(boefje_meta: BoefjeMeta, environment_keys: List[str]) -> Dict[str, str]: +def get_environment_settings(boefje_meta: BoefjeMeta, environment_keys: list[str]) -> dict[str, str]: try: katalogus_api = str(settings.katalogus_api).rstrip("/") response = requests.get( @@ -190,7 +191,7 @@ def __init__( self, job_runner: NormalizerJobRunner, bytes_client: BytesAPIClient, - whitelist: Optional[Dict[str, int]] = None, + whitelist: dict[str, int] | None = None, octopoes_factory: Callable[[str], OctopoesAPIConnector] = get_octopoes_api_connector, ): self.job_runner = job_runner diff --git a/boefjes/boefjes/job_models.py b/boefjes/boefjes/job_models.py index a92b699edb4..92bc388198f 100644 --- a/boefjes/boefjes/job_models.py +++ b/boefjes/boefjes/job_models.py @@ -1,9 +1,8 @@ from datetime import timedelta -from typing import Dict, List, Literal, Optional, Union +from typing import Annotated, Literal from uuid import UUID from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StringConstraints -from typing_extensions import Annotated class JobException(Exception): @@ -15,11 +14,11 @@ def __init__(self, message: str): class Job(BaseModel): id: UUID - started_at: Optional[AwareDatetime] = Field(default=None) - ended_at: Optional[AwareDatetime] = Field(default=None) + started_at: AwareDatetime | None = Field(default=None) + ended_at: AwareDatetime | None = Field(default=None) @property - def runtime(self) -> Optional[timedelta]: + def runtime(self) -> timedelta | None: if self.started_at is not None and self.ended_at is not None: return self.ended_at - self.started_at else: @@ -30,29 +29,29 @@ class Boefje(BaseModel): """Identifier for Boefje in a BoefjeMeta""" id: Annotated[str, StringConstraints(min_length=1)] - version: Optional[str] = Field(default=None) + version: str | None = Field(default=None) class Normalizer(BaseModel): """Identifier for Normalizer in a NormalizerMeta""" id: Annotated[str, StringConstraints(min_length=1)] - version: Optional[str] = Field(default=None) + version: str | None = Field(default=None) class BoefjeMeta(Job): boefje: Boefje - input_ooi: Optional[str] = None - arguments: Dict = {} + input_ooi: str | None = None + arguments: dict = {} organization: str - runnable_hash: Optional[str] = None - environment: Optional[Dict[str, str]] = None + runnable_hash: str | None = None + environment: dict[str, str] | None = None class RawDataMeta(BaseModel): id: UUID boefje_meta: BoefjeMeta - mime_types: List[Dict[str, str]] + mime_types: list[dict[str, str]] class NormalizerMeta(Job): @@ -88,7 +87,7 @@ class NormalizerPlainOOI(BaseModel): # Validation of plain OOIs being returned class NormalizerObservation(BaseModel): type: Literal["observation"] = "observation" input_ooi: str - results: List[NormalizerPlainOOI] + results: list[NormalizerPlainOOI] class NormalizerDeclaration(BaseModel): @@ -102,10 +101,10 @@ class NormalizerScanProfile(BaseModel): class NormalizerResult(BaseModel): # Moves all validation logic to Pydantic - item: Union[NormalizerPlainOOI, NormalizerObservation, NormalizerDeclaration, NormalizerScanProfile] + item: NormalizerPlainOOI | NormalizerObservation | NormalizerDeclaration | NormalizerScanProfile class NormalizerOutput(BaseModel): - observations: List[NormalizerObservation] = [] - declarations: List[NormalizerDeclaration] = [] - scan_profiles: List[NormalizerScanProfile] = [] + observations: list[NormalizerObservation] = [] + declarations: list[NormalizerDeclaration] = [] + scan_profiles: list[NormalizerScanProfile] = [] diff --git a/boefjes/boefjes/katalogus/api.py b/boefjes/boefjes/katalogus/api.py index d763ac10fda..3da6cb85668 100644 --- a/boefjes/boefjes/katalogus/api.py +++ b/boefjes/boefjes/katalogus/api.py @@ -1,6 +1,6 @@ import json import logging.config -from typing import Any, List, Optional +from typing import Any from fastapi import FastAPI, Request, status from fastapi.responses import JSONResponse, RedirectResponse @@ -57,9 +57,9 @@ def entity_not_found_handler(request: Request, exc: StorageError): class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) + results: list["ServiceHealth"] = Field(default_factory=list) ServiceHealth.update_forward_refs() diff --git a/boefjes/boefjes/katalogus/clients.py b/boefjes/boefjes/katalogus/clients.py index 27db5c3f022..209593a13c0 100644 --- a/boefjes/boefjes/katalogus/clients.py +++ b/boefjes/boefjes/katalogus/clients.py @@ -1,5 +1,3 @@ -from typing import Dict, Optional - from pydantic import TypeAdapter from requests import Session @@ -7,7 +5,7 @@ class PluginRepositoryClientInterface: - def get_plugins(self, repository: Repository, plugin_type: Optional[PluginType] = None) -> Dict[str, PluginType]: + def get_plugins(self, repository: Repository, plugin_type: PluginType | None = None) -> dict[str, PluginType]: raise NotImplementedError def get_plugin(self, repository: Repository, plugin_id: str) -> PluginType: @@ -15,10 +13,10 @@ def get_plugin(self, repository: Repository, plugin_id: str) -> PluginType: class MockPluginRepositoryClient(PluginRepositoryClientInterface): - def __init__(self, plugin_types: Dict[str, Dict[str, PluginType]]): + def __init__(self, plugin_types: dict[str, dict[str, PluginType]]): self.plugin_types = plugin_types - def get_plugins(self, repository: Repository, plugin_type: Optional[PluginType] = None) -> Dict[str, PluginType]: + def get_plugins(self, repository: Repository, plugin_type: PluginType | None = None) -> dict[str, PluginType]: return self.plugin_types[repository.id] def get_plugin(self, repository: Repository, plugin_id: str) -> PluginType: @@ -29,11 +27,11 @@ class PluginRepositoryClient(PluginRepositoryClientInterface): def __init__(self): self._session = Session() - def get_plugins(self, repository: Repository, plugin_type: Optional[PluginType] = None) -> Dict[str, PluginType]: + def get_plugins(self, repository: Repository, plugin_type: PluginType | None = None) -> dict[str, PluginType]: res = self._session.get(f"{repository.base_url}/plugins", params={"plugin_type": plugin_type}) res.raise_for_status() - plugins = TypeAdapter(Dict[str, PluginType]).validate_json(res.content) + plugins = TypeAdapter(dict[str, PluginType]).validate_json(res.content) for plugin in plugins.values(): plugin.repository = repository.id diff --git a/boefjes/boefjes/katalogus/dependencies/organisations.py b/boefjes/boefjes/katalogus/dependencies/organisations.py index 62ada771b39..46c03a936c3 100644 --- a/boefjes/boefjes/katalogus/dependencies/organisations.py +++ b/boefjes/boefjes/katalogus/dependencies/organisations.py @@ -1,5 +1,5 @@ import logging -from typing import Iterator +from collections.abc import Iterator from boefjes.katalogus.storage.interfaces import OrganisationStorage from boefjes.sql.db import session_managed_iterator diff --git a/boefjes/boefjes/katalogus/dependencies/plugins.py b/boefjes/boefjes/katalogus/dependencies/plugins.py index 0fdbb55c465..9fae16b9503 100644 --- a/boefjes/boefjes/katalogus/dependencies/plugins.py +++ b/boefjes/boefjes/katalogus/dependencies/plugins.py @@ -1,7 +1,8 @@ import contextlib import logging +from collections.abc import Iterable, Iterator from pathlib import Path -from typing import Dict, Iterable, Iterator, List, Literal, Optional +from typing import Literal from jsonschema.exceptions import ValidationError from jsonschema.validators import validate @@ -57,10 +58,10 @@ def __exit__(self, exc_type, exc_val, exc_tb): self.repository_storage.__exit__(exc_type, exc_val, exc_tb) self.plugin_enabled_store.__exit__(exc_type, exc_val, exc_tb) - def get_all(self, organisation_id: str) -> List[PluginType]: + def get_all(self, organisation_id: str) -> list[PluginType]: all_plugins = self._plugins_for_repos(self.repository_storage.get_all().values(), organisation_id) - flat: List[PluginType] = [] + flat: list[PluginType] = [] for plugins in all_plugins.values(): flat.extend(plugins.values()) @@ -95,7 +96,7 @@ def clone_settings_to_organisation(self, from_organisation: str, to_organisation for plugin_id in plugins: self.update_by_id(repository_id, plugin_id, to_organisation, enabled=True) - def upsert_settings(self, values: Dict, organisation_id: str, plugin_id: str): + def upsert_settings(self, values: dict, organisation_id: str, plugin_id: str): self._assert_settings_match_schema(values, organisation_id, plugin_id) return self.settings_storage.upsert(values, organisation_id, plugin_id) @@ -113,7 +114,7 @@ def delete_settings(self, organisation_id: str, plugin_id: str): # These three methods should return this static info from remote repositories as well in the future - def schema(self, plugin_id: str) -> Optional[Dict]: + def schema(self, plugin_id: str) -> dict | None: return self.local_repo.schema(plugin_id) def cover(self, plugin_id: str) -> Path: @@ -134,7 +135,7 @@ def description(self, plugin_id: str, organisation_id: str) -> str: logger.error("Plugin not found: %s", plugin_id) return "" - def repository_plugins(self, repository_id: str, organisation_id: str) -> Dict[str, PluginType]: + def repository_plugins(self, repository_id: str, organisation_id: str) -> dict[str, PluginType]: return self._plugins_for_repos([self.repository_storage.get_by_id(repository_id)], organisation_id).get( repository_id, {} ) @@ -160,8 +161,8 @@ def update_by_id(self, repository_id: str, plugin_id: str, organisation_id: str, def _plugins_for_repos( self, repositories: Iterable[Repository], organisation_id: str - ) -> Dict[str, Dict[str, PluginType]]: - plugins: Dict[str, Dict[str, PluginType]] = {} + ) -> dict[str, dict[str, PluginType]]: + plugins: dict[str, dict[str, PluginType]] = {} for repository in repositories: if repository.id == RESERVED_LOCAL_ID: @@ -177,7 +178,7 @@ def _plugins_for_repos( return plugins - def _assert_settings_match_schema(self, all_settings: Dict, organisation_id: str, plugin_id: str): + def _assert_settings_match_schema(self, all_settings: dict, organisation_id: str, plugin_id: str): schema = self.schema(plugin_id) if schema: # No schema means that there is nothing to assert @@ -210,13 +211,13 @@ def closure(session: Session): yield from session_managed_iterator(closure) -def get_pagination_parameters(offset: int = 0, limit: Optional[int] = LIMIT) -> PaginationParameters: +def get_pagination_parameters(offset: int = 0, limit: int | None = LIMIT) -> PaginationParameters: return PaginationParameters(offset=offset, limit=limit) def get_plugins_filter_parameters( - q: Optional[str] = None, - plugin_type: Optional[Literal["boefje", "normalizer", "bit"]] = None, - state: Optional[bool] = None, + q: str | None = None, + plugin_type: Literal["boefje", "normalizer", "bit"] | None = None, + state: bool | None = None, ) -> FilterParameters: return FilterParameters(q=q, type=plugin_type, state=state) diff --git a/boefjes/boefjes/katalogus/dependencies/repositories.py b/boefjes/boefjes/katalogus/dependencies/repositories.py index e647ece17e6..ee7b21fdf19 100644 --- a/boefjes/boefjes/katalogus/dependencies/repositories.py +++ b/boefjes/boefjes/katalogus/dependencies/repositories.py @@ -1,5 +1,5 @@ import logging -from typing import Iterator +from collections.abc import Iterator from boefjes.katalogus.storage.interfaces import RepositoryStorage from boefjes.sql.db import session_managed_iterator diff --git a/boefjes/boefjes/katalogus/local_repository.py b/boefjes/boefjes/katalogus/local_repository.py index 23644061562..475f8c6584d 100644 --- a/boefjes/boefjes/katalogus/local_repository.py +++ b/boefjes/boefjes/katalogus/local_repository.py @@ -2,7 +2,7 @@ import logging import pkgutil from pathlib import Path -from typing import Any, Dict, List, Optional, Tuple +from typing import Any from boefjes.katalogus.models import PluginType from boefjes.plugins.models import ( @@ -22,10 +22,10 @@ class LocalPluginRepository: def __init__(self, path: Path): self.path = path - self._cached_boefjes: Optional[Dict[str, Any]] = None - self._cached_normalizers: Optional[Dict[str, Any]] = None + self._cached_boefjes: dict[str, Any] | None = None + self._cached_normalizers: dict[str, Any] | None = None - def get_all(self) -> List[PluginType]: + def get_all(self) -> list[PluginType]: all_plugins = [boefje_resource.boefje for boefje_resource in self.resolve_boefjes().values()] normalizers = [normalizer_resource.normalizer for normalizer_resource in self.resolve_normalizers().values()] @@ -46,7 +46,7 @@ def by_id(self, plugin_id: str) -> PluginType: raise Exception(f"Can't find plugin {plugin_id}") - def schema(self, id_: str) -> Optional[Dict]: + def schema(self, id_: str) -> dict | None: boefjes = self.resolve_boefjes() if id_ not in boefjes: @@ -80,7 +80,7 @@ def cover_path(self, id_: str) -> Path: def default_cover_path(self) -> Path: return self.path / "default_cover.jpg" - def description_path(self, id_: str) -> Optional[Path]: + def description_path(self, id_: str) -> Path | None: boefjes = self.resolve_boefjes() if id_ not in boefjes: @@ -88,7 +88,7 @@ def description_path(self, id_: str) -> Optional[Path]: return boefjes[id_].path / "description.md" - def resolve_boefjes(self) -> Dict[str, BoefjeResource]: + def resolve_boefjes(self) -> dict[str, BoefjeResource]: if self._cached_boefjes: return self._cached_boefjes @@ -105,7 +105,7 @@ def resolve_boefjes(self) -> Dict[str, BoefjeResource]: return self._cached_boefjes - def resolve_normalizers(self) -> Dict[str, NormalizerResource]: + def resolve_normalizers(self) -> dict[str, NormalizerResource]: if self._cached_normalizers: return self._cached_normalizers @@ -124,7 +124,7 @@ def resolve_normalizers(self) -> Dict[str, NormalizerResource]: return self._cached_normalizers - def _find_packages_in_path_containing_files(self, files: List[str]) -> List[Tuple[Path, str]]: + def _find_packages_in_path_containing_files(self, files: list[str]) -> list[tuple[Path, str]]: prefix = self.create_relative_import_statement_from_cwd(self.path) paths = [] diff --git a/boefjes/boefjes/katalogus/models.py b/boefjes/boefjes/katalogus/models.py index 3007efc31e1..1f08f5404b0 100644 --- a/boefjes/boefjes/katalogus/models.py +++ b/boefjes/boefjes/katalogus/models.py @@ -1,6 +1,6 @@ import datetime from enum import Enum -from typing import List, Literal, NewType, Optional, Set, Union +from typing import Literal, NewType from pydantic import AnyHttpUrl, BaseModel, Field @@ -21,13 +21,13 @@ class Organisation(BaseModel): class Plugin(BaseModel): id: str repository_id: str = RESERVED_LOCAL_ID - name: Optional[str] = None - version: Optional[str] = None - authors: Optional[List[str]] = None - created: Optional[datetime.datetime] = None - description: Optional[str] = None - environment_keys: List[str] = Field(default_factory=list) - related: Optional[List[str]] = None + name: str | None = None + version: str | None = None + authors: list[str] | None = None + created: datetime.datetime | None = None + description: str | None = None + environment_keys: list[str] = Field(default_factory=list) + related: list[str] | None = None enabled: bool = False def __str__(self): @@ -37,29 +37,29 @@ def __str__(self): class Boefje(Plugin): type: Literal["boefje"] = "boefje" scan_level: int = 1 - consumes: Set[str] = Field(default_factory=set) - produces: Set[str] = Field(default_factory=set) - options: Optional[List[str]] = None - runnable_hash: Optional[str] = None - oci_image: Optional[str] = None + consumes: set[str] = Field(default_factory=set) + produces: set[str] = Field(default_factory=set) + options: list[str] | None = None + runnable_hash: str | None = None + oci_image: str | None = None class Normalizer(Plugin): type: Literal["normalizer"] = "normalizer" - consumes: List[str] = Field(default_factory=list) # mime types (and/ or boefjes) - produces: List[str] = Field(default_factory=list) # oois + consumes: list[str] = Field(default_factory=list) # mime types (and/ or boefjes) + produces: list[str] = Field(default_factory=list) # oois enabled: bool = True class Bit(Plugin): type: Literal["bit"] = "bit" consumes: str - produces: List[str] - parameters: List[str] # ooi.relation-name + produces: list[str] + parameters: list[str] # ooi.relation-name enabled: bool = True -PluginType = Union[Boefje, Normalizer, Bit] +PluginType = Boefje | Normalizer | Bit Base64Str = NewType("Base64Str", str) diff --git a/boefjes/boefjes/katalogus/routers/organisations.py b/boefjes/boefjes/katalogus/routers/organisations.py index 6cf59f82d63..1dd98ec823a 100644 --- a/boefjes/boefjes/katalogus/routers/organisations.py +++ b/boefjes/boefjes/katalogus/routers/organisations.py @@ -1,5 +1,3 @@ -from typing import Dict - from fastapi import APIRouter, Depends, HTTPException, status from boefjes.katalogus.dependencies.organisations import get_organisations_store @@ -28,7 +26,7 @@ def check_organisation_exists( storage.get_by_id(organisation_id) -@router.get("", response_model=Dict[str, Organisation]) +@router.get("", response_model=dict[str, Organisation]) def list_organisations( storage: OrganisationStorage = Depends(get_organisations_store), ): diff --git a/boefjes/boefjes/katalogus/routers/plugins.py b/boefjes/boefjes/katalogus/routers/plugins.py index 437e23fa6a7..796adb347a6 100644 --- a/boefjes/boefjes/katalogus/routers/plugins.py +++ b/boefjes/boefjes/katalogus/routers/plugins.py @@ -1,5 +1,4 @@ from functools import partial -from typing import Dict, List from fastapi import APIRouter, Body, Depends, HTTPException, status from fastapi.responses import FileResponse, JSONResponse, Response @@ -32,13 +31,13 @@ def _plugin_matches_query(plugin: PluginType, query: str) -> bool: # todo: sorting? -@router.get("/plugins", response_model=List[PluginType]) +@router.get("/plugins", response_model=list[PluginType]) def list_plugins( organisation_id: str, filter_params: FilterParameters = Depends(get_plugins_filter_parameters), pagination_params: PaginationParameters = Depends(get_pagination_parameters), plugin_service: PluginService = Depends(get_plugin_service), -) -> List[PluginType]: +) -> list[PluginType]: with plugin_service as p: plugins = p.get_all(organisation_id) @@ -83,7 +82,7 @@ def get_plugin( @router.get( "/repositories/{repository_id}/plugins", - response_model=Dict[str, PluginType], + response_model=dict[str, PluginType], ) def list_repository_plugins( repository_id: str, diff --git a/boefjes/boefjes/katalogus/routers/repositories.py b/boefjes/boefjes/katalogus/routers/repositories.py index fb02ede65c1..b00d08d16ea 100644 --- a/boefjes/boefjes/katalogus/routers/repositories.py +++ b/boefjes/boefjes/katalogus/routers/repositories.py @@ -1,5 +1,3 @@ -from typing import Dict - from fastapi import APIRouter, Depends, HTTPException, status from boefjes.katalogus.dependencies.repositories import get_repository_store @@ -14,7 +12,7 @@ ) -@router.get("", response_model=Dict[str, Repository], response_model_exclude={0: {0: False}}) +@router.get("", response_model=dict[str, Repository], response_model_exclude={0: {0: False}}) def list_repositories(storage: RepositoryStorage = Depends(get_repository_store)): return storage.get_all() diff --git a/boefjes/boefjes/katalogus/routers/settings.py b/boefjes/boefjes/katalogus/routers/settings.py index ed16169eabc..9c1bebe8d04 100644 --- a/boefjes/boefjes/katalogus/routers/settings.py +++ b/boefjes/boefjes/katalogus/routers/settings.py @@ -1,5 +1,3 @@ -from typing import Dict - from fastapi import APIRouter, Depends from boefjes.katalogus.dependencies.plugins import PluginService, get_plugin_service @@ -12,7 +10,7 @@ ) -@router.get("", response_model=Dict) +@router.get("", response_model=dict) def list_settings( organisation_id: str, plugin_id: str, @@ -26,7 +24,7 @@ def list_settings( def upsert_settings( organisation_id: str, plugin_id: str, - values: Dict, + values: dict, plugin_service: PluginService = Depends(get_plugin_service), ): with plugin_service as p: diff --git a/boefjes/boefjes/katalogus/storage/diskcache.py b/boefjes/boefjes/katalogus/storage/diskcache.py index f2b2e6ae441..99db648c11f 100644 --- a/boefjes/boefjes/katalogus/storage/diskcache.py +++ b/boefjes/boefjes/katalogus/storage/diskcache.py @@ -1,5 +1,4 @@ from pathlib import Path -from typing import Dict, Union from diskcache import Cache @@ -13,7 +12,7 @@ class OrganisationStorageDisk(OrganisationStorage): - def __init__(self, directory: Union[str, Path]): + def __init__(self, directory: str | Path): self._cache = Cache(Path(directory).as_posix()) if "organisations" not in self._cache: self._cache["organisations"] = {} @@ -23,7 +22,7 @@ def __init__(self, directory: Union[str, Path]): def get_by_id(self, organisation_id: str) -> Organisation: return self._organisations[organisation_id] - def get_all(self) -> Dict[str, Organisation]: + def get_all(self) -> dict[str, Organisation]: return self._organisations def create(self, organisation: Organisation) -> None: @@ -34,7 +33,7 @@ def delete_by_id(self, organisation_id: str) -> None: class RepositoryStorageDisk(RepositoryStorage): - def __init__(self, directory: Union[str, Path]): + def __init__(self, directory: str | Path): self._cache = Cache(Path(directory).as_posix()) if "repositories" not in self._cache: self._cache["repositories"] = {} @@ -44,7 +43,7 @@ def __init__(self, directory: Union[str, Path]): def get_by_id(self, id_: str) -> Repository: return self._repositories[id_] - def get_all(self) -> Dict[str, Repository]: + def get_all(self) -> dict[str, Repository]: return self._repositories def create(self, repository: Repository) -> None: diff --git a/boefjes/boefjes/katalogus/storage/interfaces.py b/boefjes/boefjes/katalogus/storage/interfaces.py index 53164c5620c..77200bd4896 100644 --- a/boefjes/boefjes/katalogus/storage/interfaces.py +++ b/boefjes/boefjes/katalogus/storage/interfaces.py @@ -1,5 +1,4 @@ from abc import ABC -from typing import Dict, List, Type from boefjes.katalogus.models import Organisation, Repository @@ -50,13 +49,13 @@ class OrganisationStorage(ABC): def __enter__(self): return self - def __exit__(self, exc_type: Type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 + def __exit__(self, exc_type: type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 pass def get_by_id(self, organisation_id: str) -> Organisation: raise NotImplementedError - def get_all(self) -> Dict[str, Organisation]: + def get_all(self) -> dict[str, Organisation]: raise NotImplementedError def create(self, organisation: Organisation) -> None: @@ -70,13 +69,13 @@ class RepositoryStorage(ABC): def __enter__(self): return self - def __exit__(self, exc_type: Type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 + def __exit__(self, exc_type: type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 pass def get_by_id(self, id_: str) -> Repository: raise NotImplementedError - def get_all(self) -> Dict[str, Repository]: + def get_all(self) -> dict[str, Repository]: raise NotImplementedError def create(self, repository: Repository) -> None: @@ -90,13 +89,13 @@ class SettingsStorage(ABC): def __enter__(self): return self - def __exit__(self, exc_type: Type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 + def __exit__(self, exc_type: type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 pass - def get_all(self, organisation_id: str, plugin_id: str) -> Dict[str, str]: + def get_all(self, organisation_id: str, plugin_id: str) -> dict[str, str]: raise NotImplementedError - def upsert(self, values: Dict, organisation_id: str, plugin_id: str) -> None: + def upsert(self, values: dict, organisation_id: str, plugin_id: str) -> None: raise NotImplementedError def delete(self, organisation_id: str, plugin_id: str) -> None: @@ -107,13 +106,13 @@ class PluginEnabledStorage(ABC): def __enter__(self): return self - def __exit__(self, exc_type: Type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 + def __exit__(self, exc_type: type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 pass def get_by_id(self, plugin_id: str, repository_id: str, organisation_id: str) -> bool: raise NotImplementedError - def get_all_enabled(self, organisation_id: str) -> Dict[str, List[str]]: + def get_all_enabled(self, organisation_id: str) -> dict[str, list[str]]: raise NotImplementedError def create(self, plugin_id: str, repository_id: str, enabled: bool, organisation_id: str) -> None: diff --git a/boefjes/boefjes/katalogus/storage/memory.py b/boefjes/boefjes/katalogus/storage/memory.py index 5429775e8fe..a7d2b886b3a 100644 --- a/boefjes/boefjes/katalogus/storage/memory.py +++ b/boefjes/boefjes/katalogus/storage/memory.py @@ -1,5 +1,3 @@ -from typing import Dict, List, Optional - from boefjes.katalogus.models import RESERVED_LOCAL_ID, Organisation, Repository from boefjes.katalogus.storage.interfaces import ( OrganisationStorage, @@ -9,23 +7,23 @@ ) # key = organisation id; value = organisation -organisations: Dict[str, Organisation] = {} +organisations: dict[str, Organisation] = {} # key = organisation, repository/plugin id; value = enabled/ disabled -plugins_state: Dict[str, Dict[str, bool]] = {} +plugins_state: dict[str, dict[str, bool]] = {} # key = organisation id, repository id; value = repository -repositories: Dict[str, Dict[str, Repository]] = {} +repositories: dict[str, dict[str, Repository]] = {} class OrganisationStorageMemory(OrganisationStorage): - def __init__(self, defaults: Optional[Dict[str, Organisation]] = None): + def __init__(self, defaults: dict[str, Organisation] | None = None): self._data = organisations if defaults is None else defaults def get_by_id(self, organisation_id: str) -> Organisation: return self._data[organisation_id] - def get_all(self) -> Dict[str, Organisation]: + def get_all(self) -> dict[str, Organisation]: return self._data def create(self, organisation: Organisation) -> None: @@ -39,7 +37,7 @@ class RepositoryStorageMemory(RepositoryStorage): def __init__( self, organisation_id: str, - defaults: Optional[Dict[str, Repository]] = None, + defaults: dict[str, Repository] | None = None, ): self._data = repositories.setdefault(organisation_id, {}) if defaults is None else defaults self._organisation_id = organisation_id @@ -47,7 +45,7 @@ def __init__( def get_by_id(self, id_: str) -> Repository: return self._data[id_] - def get_all(self) -> Dict[str, Repository]: + def get_all(self) -> dict[str, Repository]: return self._data def create(self, repository: Repository) -> None: @@ -61,13 +59,13 @@ class SettingsStorageMemory(SettingsStorage): def __init__(self): self._data = {} - def get_all(self, organisation_id: str, plugin_id: str) -> Dict[str, str]: + def get_all(self, organisation_id: str, plugin_id: str) -> dict[str, str]: if organisation_id not in self._data: return {} return self._data[organisation_id].get(plugin_id, {}) - def upsert(self, values: Dict, organisation_id: str, plugin_id: str) -> None: + def upsert(self, values: dict, organisation_id: str, plugin_id: str) -> None: if organisation_id not in self._data: self._data[organisation_id] = {} @@ -84,7 +82,7 @@ class PluginStatesStorageMemory(PluginEnabledStorage): def __init__( self, organisation: str, - defaults: Optional[Dict[str, bool]] = None, + defaults: dict[str, bool] | None = None, ): self._data = plugins_state.setdefault(organisation, {}) if defaults is None else defaults self._organisation = organisation @@ -92,7 +90,7 @@ def __init__( def get_by_id(self, plugin_id: str, repository_id: str, organisation_id: str) -> bool: return self._data[f"{organisation_id}.{plugin_id}"] - def get_all_enabled(self, organisation_id: str) -> Dict[str, List[str]]: + def get_all_enabled(self, organisation_id: str) -> dict[str, list[str]]: return { RESERVED_LOCAL_ID: [ key.split(".", maxsplit=1)[1] diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/kat_test_3/normalize.py b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/kat_test_3/normalize.py index 56aba4cfb85..fd7b1ff7365 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/kat_test_3/normalize.py +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/kat_test_3/normalize.py @@ -1,11 +1,11 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: network = Network(name=raw.decode()) yield network diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/main.py b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/main.py index a260f2507a9..3c47dc4782f 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/main.py +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/kat_test_2/main.py @@ -1,7 +1,5 @@ -from typing import List, Tuple, Union - from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: return [(set(), b"dummy-data")] diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/main.py b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/main.py index a260f2507a9..3c47dc4782f 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/main.py +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/main.py @@ -1,7 +1,5 @@ -from typing import List, Tuple, Union - from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: return [(set(), b"dummy-data")] diff --git a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/normalize.py b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/normalize.py index 56aba4cfb85..fd7b1ff7365 100644 --- a/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/normalize.py +++ b/boefjes/boefjes/katalogus/tests/boefjes_test_dir/kat_test/normalize.py @@ -1,11 +1,11 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: network = Network(name=raw.decode()) yield network diff --git a/boefjes/boefjes/katalogus/types.py b/boefjes/boefjes/katalogus/types.py index f21ff77cce2..6e443bb96c9 100644 --- a/boefjes/boefjes/katalogus/types.py +++ b/boefjes/boefjes/katalogus/types.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Literal, Optional +from typing import Literal from pydantic import BaseModel @@ -15,7 +15,7 @@ class PaginationParameters(BaseModel): class FilterParameters(BaseModel): - q: Optional[str] = None - type: Optional[Literal["boefje", "normalizer", "bit"]] = None - state: Optional[bool] = None + q: str | None = None + type: Literal["boefje", "normalizer", "bit"] | None = None + state: bool | None = None scan_level: int = 0 diff --git a/boefjes/boefjes/local.py b/boefjes/boefjes/local.py index 5dcc44c89c2..07bb439eecb 100644 --- a/boefjes/boefjes/local.py +++ b/boefjes/boefjes/local.py @@ -1,6 +1,6 @@ import logging import os -from typing import Any, Dict, List, Tuple, Union +from typing import Any from pydantic import ValidationError @@ -42,7 +42,7 @@ class LocalBoefjeJobRunner(BoefjeJobRunner): def __init__(self, local_repository: LocalPluginRepository): self.local_repository = local_repository - def run(self, boefje_meta: BoefjeMeta, environment: Dict[str, str]) -> List[Tuple[set, Union[bytes, str]]]: + def run(self, boefje_meta: BoefjeMeta, environment: dict[str, str]) -> list[tuple[set, bytes | str]]: logger.info("Running local boefje plugin") boefjes = self.local_repository.resolve_boefjes() @@ -73,8 +73,8 @@ def run(self, normalizer_meta, raw) -> NormalizerOutput: return self._parse_results(normalizer_meta, results) - def _parse_results(self, normalizer_meta: NormalizerMeta, results: List[Any]) -> NormalizerOutput: - parsed: List[NormalizerResult] = [self._parse(result) for result in results] + def _parse_results(self, normalizer_meta: NormalizerMeta, results: list[Any]) -> NormalizerOutput: + parsed: list[NormalizerResult] = [self._parse(result) for result in results] if oois := [ooi for ooi in parsed if isinstance(ooi.item, NormalizerPlainOOI)]: if not normalizer_meta.raw_data.boefje_meta.input_ooi: @@ -105,7 +105,7 @@ def _parse_results(self, normalizer_meta: NormalizerMeta, results: List[Any]) -> @staticmethod def _parse(result: Any) -> NormalizerResult: if not isinstance(result, dict): # Must be an OOI or ScanProfile. Should be phased out with Octopoes dependency - if not isinstance(result, (OOI, DeclaredScanProfile)): + if not isinstance(result, OOI | DeclaredScanProfile): raise UnsupportedReturnTypeNormalizer(str(type(result))) result = result.dict() diff --git a/boefjes/boefjes/plugins/helpers.py b/boefjes/boefjes/plugins/helpers.py index 38411a02cc7..7b3e45d39f3 100644 --- a/boefjes/boefjes/plugins/helpers.py +++ b/boefjes/boefjes/plugins/helpers.py @@ -2,7 +2,7 @@ import logging import os import tarfile -from typing import ByteString, Generator, Union +from collections.abc import ByteString, Generator import docker @@ -44,7 +44,7 @@ def readinto(self, memory_view: ByteString) -> int: return outlen -def get_file_from_container(container: docker.models.containers.Container, path: str) -> Union[bytes, None]: +def get_file_from_container(container: docker.models.containers.Container, path: str) -> bytes | None: """Returns a file from a docker container.""" try: stream, _ = container.get_archive(path) diff --git a/boefjes/boefjes/plugins/kat_adr_finding_types/main.py b/boefjes/boefjes/plugins/kat_adr_finding_types/main.py index 8ddbcdae04b..006c72b89a2 100644 --- a/boefjes/boefjes/plugins/kat_adr_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_adr_finding_types/main.py @@ -1,12 +1,11 @@ import json -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta FINDING_TYPE_PATH = "boefjes/plugins/kat_adr_finding_types/adr_finding_types.json" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: with open(FINDING_TYPE_PATH) as json_file: data = json.load(json_file) return [(set(), json.dumps(data))] diff --git a/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py index a89c1f1e516..2b78f1796c8 100644 --- a/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -18,7 +18,7 @@ } -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: adr_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_adr_validator/main.py b/boefjes/boefjes/plugins/kat_adr_validator/main.py index d06d8024aca..95a8127b6fd 100644 --- a/boefjes/boefjes/plugins/kat_adr_validator/main.py +++ b/boefjes/boefjes/plugins/kat_adr_validator/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -16,7 +14,7 @@ def run_adr_validator(url: str) -> str: return client.containers.run(image, args, remove=True, read_only=True) -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ooi = boefje_meta.arguments["input"] api_url = input_ooi["api_url"] diff --git a/boefjes/boefjes/plugins/kat_adr_validator/normalize.py b/boefjes/boefjes/plugins/kat_adr_validator/normalize.py index 9d93a309668..385327f758b 100644 --- a/boefjes/boefjes/plugins/kat_adr_validator/normalize.py +++ b/boefjes/boefjes/plugins/kat_adr_validator/normalize.py @@ -1,5 +1,5 @@ import json -from typing import Dict, Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import Reference @@ -7,7 +7,7 @@ from octopoes.models.ooi.web import APIDesignRule, APIDesignRuleResult -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[Dict]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[dict]: boefje_meta = normalizer_meta.raw_data.boefje_meta pk = boefje_meta.input_ooi ooi_ref = Reference.from_str(pk) diff --git a/boefjes/boefjes/plugins/kat_answer_parser/normalize.py b/boefjes/boefjes/plugins/kat_answer_parser/normalize.py index 60e1be58d4b..7407a919109 100644 --- a/boefjes/boefjes/plugins/kat_answer_parser/normalize.py +++ b/boefjes/boefjes/plugins/kat_answer_parser/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI from octopoes.models.ooi.config import Config -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: mime_types = [mime_type["value"] for mime_type in normalizer_meta.raw_data.mime_types] if "/bit/port-classification-ip" in mime_types: diff --git a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py index 5074e943b6a..c2ff217c73b 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -16,7 +16,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py index a216cdc9442..3e837c569d8 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -16,7 +16,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py index ec00365594d..7594bd18301 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_binaryedge.services.normalize import get_name_from_cpe @@ -16,7 +16,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/main.py b/boefjes/boefjes/plugins/kat_binaryedge/main.py index a35ac50c249..84798f8d34a 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/main.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/main.py @@ -1,16 +1,15 @@ import json import math from os import getenv -from typing import Dict, List, Tuple, Union from pybinaryedge import BinaryEdge from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: be = BinaryEdge(getenv("BINARYEDGE_API")) - results: Dict[str, List] = {"results": []} + results: dict[str, list] = {"results": []} input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py index 44c6b6dc8e9..f81efe19fc2 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -16,7 +16,7 @@ from octopoes.models.ooi.software import Software -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py index 5bf6129d626..dfc254b9207 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -15,7 +15,7 @@ ) -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py index 01693f7f866..ee5d520f567 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -16,7 +16,7 @@ from octopoes.models.ooi.service import IPService, Service -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py index 262ab0cf71b..42e83d47d94 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_binaryedge.services.normalize import get_name_from_cpe @@ -18,7 +18,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py index 1f56279ff94..0c3da238815 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -28,7 +28,7 @@ def get_name_from_cpe(cpe: str) -> str: return cpe -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta input_ = boefje_meta.arguments["input"] diff --git a/boefjes/boefjes/plugins/kat_burpsuite/normalize.py b/boefjes/boefjes/plugins/kat_burpsuite/normalize.py index ca2312cd6d5..a3eeeecb1ff 100644 --- a/boefjes/boefjes/plugins/kat_burpsuite/normalize.py +++ b/boefjes/boefjes/plugins/kat_burpsuite/normalize.py @@ -1,6 +1,6 @@ import base64 +from collections.abc import Iterable from ipaddress import IPv4Address, IPv6Address, ip_address -from typing import Iterable, Union from urllib.parse import urlparse from bs4 import BeautifulSoup @@ -15,7 +15,7 @@ from octopoes.models.ooi.web import URL, HostnameHTTPURL, HTTPHeader, HTTPResource, IPAddressHTTPURL, WebScheme, Website -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: parser = minidom.parse(raw) # assume that input ooi is none or a HostnameHTTPURL diff --git a/boefjes/boefjes/plugins/kat_calvin/normalize.py b/boefjes/boefjes/plugins/kat_calvin/normalize.py index 9f34c7a5b46..12a86305334 100644 --- a/boefjes/boefjes/plugins/kat_calvin/normalize.py +++ b/boefjes/boefjes/plugins/kat_calvin/normalize.py @@ -1,11 +1,11 @@ import json -from typing import Dict, Iterator, Union +from collections.abc import Iterator from boefjes.job_models import NormalizerMeta from octopoes.models.ooi.monitoring import Application, Incident -def run(normalizer_meta: NormalizerMeta, raw: Union[str, bytes]) -> Iterator[Dict]: +def run(normalizer_meta: NormalizerMeta, raw: str | bytes) -> Iterator[dict]: data = json.loads(raw) for log in data: diff --git a/boefjes/boefjes/plugins/kat_censys/main.py b/boefjes/boefjes/plugins/kat_censys/main.py index 23b6fd6472c..4cfc864c0be 100644 --- a/boefjes/boefjes/plugins/kat_censys/main.py +++ b/boefjes/boefjes/plugins/kat_censys/main.py @@ -1,12 +1,11 @@ import json -from typing import List, Tuple, Union from censys.search import CensysHosts from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: h = CensysHosts() input_ = boefje_meta.arguments["input"] ip = input_["address"] diff --git a/boefjes/boefjes/plugins/kat_censys/normalize.py b/boefjes/boefjes/plugins/kat_censys/normalize.py index ba4f514aaad..a5c8f284c00 100644 --- a/boefjes/boefjes/plugins/kat_censys/normalize.py +++ b/boefjes/boefjes/plugins/kat_censys/normalize.py @@ -1,6 +1,6 @@ import json import urllib.parse -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -22,7 +22,7 @@ ) -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) ip_ooi_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_crt_sh/main.py b/boefjes/boefjes/plugins/kat_crt_sh/main.py index fbd7e681be7..cb2d891bae0 100644 --- a/boefjes/boefjes/plugins/kat_crt_sh/main.py +++ b/boefjes/boefjes/plugins/kat_crt_sh/main.py @@ -1,5 +1,4 @@ import json -from typing import List, Tuple, Union import requests @@ -56,7 +55,7 @@ def request_certs(search_string, search_type="Identity", match="=", deduplicate= return response.text -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] fqdn = input_["hostname"]["name"] results = request_certs(fqdn) diff --git a/boefjes/boefjes/plugins/kat_crt_sh/normalize.py b/boefjes/boefjes/plugins/kat_crt_sh/normalize.py index e42b5bca8f3..1b7aa80d2c8 100644 --- a/boefjes/boefjes/plugins/kat_crt_sh/normalize.py +++ b/boefjes/boefjes/plugins/kat_crt_sh/normalize.py @@ -1,6 +1,6 @@ import datetime import json -from typing import Iterable, Union +from collections.abc import Iterable from dateutil.parser import parse @@ -11,7 +11,7 @@ from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) input_ = normalizer_meta.raw_data.boefje_meta.arguments["input"] fqdn = input_["hostname"]["name"] diff --git a/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py b/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py index c878a68d899..4375430b576 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_34039/main.py @@ -15,12 +15,11 @@ """ import logging import os -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[str, bytes]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, str | bytes]]: input_ = boefje_meta.arguments["input"] # input is IPService ip_port = input_["ip_port"] if input_["service"]["name"] != "ssh": diff --git a/boefjes/boefjes/plugins/kat_cve_2023_34039/normalize.py b/boefjes/boefjes/plugins/kat_cve_2023_34039/normalize.py index c451784980f..4eedc019cf6 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_34039/normalize.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_34039/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference diff --git a/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py b/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py index 30cb8191e9a..96f7b8a0b73 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_35078/main.py @@ -1,4 +1,3 @@ -from typing import List, Tuple, Union from urllib.parse import urljoin import requests @@ -8,7 +7,7 @@ ENDPOINT_PATH = "/mifs/c/windows/api/v2/device/registration" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[str, bytes]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, str | bytes]]: input_ = boefje_meta.arguments["input"] # input is website hostname = input_["hostname"]["name"] service = input_["ip_service"]["service"]["name"] diff --git a/boefjes/boefjes/plugins/kat_cve_2023_35078/normalize.py b/boefjes/boefjes/plugins/kat_cve_2023_35078/normalize.py index 84aa01ef997..19f2e678de8 100644 --- a/boefjes/boefjes/plugins/kat_cve_2023_35078/normalize.py +++ b/boefjes/boefjes/plugins/kat_cve_2023_35078/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, List, Tuple, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -6,10 +6,10 @@ from octopoes.models.ooi.software import Software, SoftwareInstance from packaging import version -VULNERABLE_RANGES: List[Tuple[str, str]] = [("0", "11.8.1.1"), ("11.9.0.0", "11.9.1.1"), ("11.10.0.0", "11.10.0.2")] +VULNERABLE_RANGES: list[tuple[str, str]] = [("0", "11.8.1.1"), ("11.9.0.0", "11.9.1.1"), ("11.10.0.0", "11.10.0.2")] -def extract_js_version(html_content: str) -> Union[version.Version, bool]: +def extract_js_version(html_content: str) -> version.Version | bool: telltale = "/mifs/scripts/auth.js?" telltale_position = html_content.find(telltale) if telltale_position == -1: @@ -23,7 +23,7 @@ def extract_js_version(html_content: str) -> Union[version.Version, bool]: return version.parse(" ".join(strip_vsp_and_build(version_string))) -def extract_css_version(html_content: str) -> Union[version.Version, bool]: +def extract_css_version(html_content: str) -> version.Version | bool: telltale = "/mifs/css/windowsAllAuth.css?" telltale_position = html_content.find(telltale) if telltale_position == -1: @@ -48,7 +48,7 @@ def strip_vsp_and_build(url: str) -> Iterable[str]: def is_vulnerable_version( - vulnerable_ranges: List[Tuple[version.Version, version.Version]], detected_version: version.Version + vulnerable_ranges: list[tuple[version.Version, version.Version]], detected_version: version.Version ) -> bool: return any(start <= detected_version < end for start, end in vulnerable_ranges) diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/main.py b/boefjes/boefjes/plugins/kat_cve_finding_types/main.py index 1dd2003c3e3..87696f87dfe 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/main.py @@ -1,12 +1,11 @@ from os import getenv -from typing import List, Tuple, Union import requests from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: cve_id = boefje_meta.arguments["input"]["id"] cveapi_url = getenv("CVEAPI_URL", "https://cve.openkat.dev/v1") response = requests.get(f"{cveapi_url}/{cve_id}.json", timeout=30) diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py index ec004033655..b2f6879c1f8 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -25,7 +25,7 @@ def get_risk_level(severity_score): return None -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: cve_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py b/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py index 40db78c81f0..d32a942a6db 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/main.py @@ -1,5 +1,4 @@ import json -from typing import List, Tuple, Union import defusedxml.ElementTree as ET @@ -8,7 +7,7 @@ FINDING_TYPE_PATH = "boefjes/plugins/kat_cwe_finding_types/cwec_v4.11.xml" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: cwe_id = boefje_meta.arguments["input"]["id"] root = ET.parse(FINDING_TYPE_PATH) diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py index 3c593bd64d4..cc93fad8748 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -9,7 +9,7 @@ logger = logging.getLogger(__name__) -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: cwe_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_dicom/main.py b/boefjes/boefjes/plugins/kat_dicom/main.py index 1cc7866f477..b3f1543e02d 100644 --- a/boefjes/boefjes/plugins/kat_dicom/main.py +++ b/boefjes/boefjes/plugins/kat_dicom/main.py @@ -1,13 +1,12 @@ import json import logging -from typing import List, Tuple, Union from pynetdicom import AE from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] ip = input_["address"] diff --git a/boefjes/boefjes/plugins/kat_dicom/normalize.py b/boefjes/boefjes/plugins/kat_dicom/normalize.py index 9d25dd0424a..099c470baea 100644 --- a/boefjes/boefjes/plugins/kat_dicom/normalize.py +++ b/boefjes/boefjes/plugins/kat_dicom/normalize.py @@ -1,5 +1,5 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -8,7 +8,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta ooi = Reference.from_str(boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_dns/main.py b/boefjes/boefjes/plugins/kat_dns/main.py index d6de2205bbb..db295c02deb 100644 --- a/boefjes/boefjes/plugins/kat_dns/main.py +++ b/boefjes/boefjes/plugins/kat_dns/main.py @@ -3,7 +3,6 @@ import logging import re from os import getenv -from typing import List, Tuple, Union import dns.resolver from dns.name import Name @@ -20,7 +19,7 @@ class ZoneNotFoundException(Exception): pass -def get_record_types() -> List[str]: +def get_record_types() -> list[str]: requested_record_types = getenv("RECORD_TYPES", "") if not requested_record_types: return DEFAULT_RECORD_TYPES @@ -28,7 +27,7 @@ def get_record_types() -> List[str]: return list(set(requested_record_types).intersection(DEFAULT_RECORD_TYPES)) -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: hostname = boefje_meta.arguments["input"]["name"] requested_dns_name = dns.name.from_text(hostname) diff --git a/boefjes/boefjes/plugins/kat_dns/normalize.py b/boefjes/boefjes/plugins/kat_dns/normalize.py index d67e38901d4..79c61678758 100644 --- a/boefjes/boefjes/plugins/kat_dns/normalize.py +++ b/boefjes/boefjes/plugins/kat_dns/normalize.py @@ -1,7 +1,7 @@ import json import re +from collections.abc import Iterable from ipaddress import IPv4Address, IPv6Address -from typing import Dict, Iterable, List, Union from dns.message import Message, from_text from dns.rdata import Rdata @@ -33,7 +33,7 @@ from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: internet = Network(name="internet") if raw.decode() == "NXDOMAIN": @@ -44,14 +44,14 @@ def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI # parse raw data into dns.response.Message sections = results["dns_records"].split("\n\n") - responses: List[Message] = [] + responses: list[Message] = [] for section in sections: lines = section.split("\n") responses.append(from_text("\n".join(lines[1:]))) zone = None - hostname_store: Dict[str, Hostname] = {} - record_store: Dict[str, DNSRecord] = {} + hostname_store: dict[str, Hostname] = {} + record_store: dict[str, DNSRecord] = {} def register_hostname(name: str) -> Hostname: hostname = Hostname( @@ -69,7 +69,7 @@ def register_record(record: DNSRecord) -> DNSRecord: input_hostname = register_hostname(normalizer_meta.raw_data.boefje_meta.arguments["input"]["name"]) # keep track of discovered zones - zone_links: Dict[str, DNSZone] = {} + zone_links: dict[str, DNSZone] = {} for response in responses: for rrset in response.answer: diff --git a/boefjes/boefjes/plugins/kat_dns_zone/main.py b/boefjes/boefjes/plugins/kat_dns_zone/main.py index eeb36b011bb..fd553346330 100644 --- a/boefjes/boefjes/plugins/kat_dns_zone/main.py +++ b/boefjes/boefjes/plugins/kat_dns_zone/main.py @@ -1,6 +1,5 @@ """Boefje script for getting dns records""" import logging -from typing import List, Tuple, Union import dns.resolver from dns.name import Name @@ -15,7 +14,7 @@ class ZoneNotFoundException(Exception): pass -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] zone_ooi = input_["hostname"]["name"] diff --git a/boefjes/boefjes/plugins/kat_dns_zone/normalize.py b/boefjes/boefjes/plugins/kat_dns_zone/normalize.py index 88b48c0fef8..cb31f74e863 100644 --- a/boefjes/boefjes/plugins/kat_dns_zone/normalize.py +++ b/boefjes/boefjes/plugins/kat_dns_zone/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, Union +from collections.abc import Iterable from dns.message import Message, from_text from dns.rdata import Rdata @@ -13,7 +13,7 @@ from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: internet = Network(name="internet") # parse raw data into dns.message.Message diff --git a/boefjes/boefjes/plugins/kat_dnssec/main.py b/boefjes/boefjes/plugins/kat_dnssec/main.py index e60f9d78413..887223b6431 100644 --- a/boefjes/boefjes/plugins/kat_dnssec/main.py +++ b/boefjes/boefjes/plugins/kat_dnssec/main.py @@ -1,7 +1,6 @@ """Boefje script checking if dnssec has been correctly configured and is valid for given hostname""" import json import re -from typing import List, Tuple, Union import docker @@ -11,7 +10,7 @@ DNSSEC_IMAGE = "noamblitz/drill:latest" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] domain = input_["name"] diff --git a/boefjes/boefjes/plugins/kat_dnssec/normalize.py b/boefjes/boefjes/plugins/kat_dnssec/normalize.py index 6b2aab67096..e6674c2ed73 100644 --- a/boefjes/boefjes/plugins/kat_dnssec/normalize.py +++ b/boefjes/boefjes/plugins/kat_dnssec/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: result = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta diff --git a/boefjes/boefjes/plugins/kat_external_db/main.py b/boefjes/boefjes/plugins/kat_external_db/main.py index 7b602f0a581..7f0478d2931 100644 --- a/boefjes/boefjes/plugins/kat_external_db/main.py +++ b/boefjes/boefjes/plugins/kat_external_db/main.py @@ -1,13 +1,12 @@ """Boefje script for getting domains and ipaddresses from dadb""" from os import getenv -from typing import List, Tuple, Union import requests from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Fetch external database response.""" api_format = getenv( "DB_ENDPOINT_FORMAT", diff --git a/boefjes/boefjes/plugins/kat_external_db/normalize.py b/boefjes/boefjes/plugins/kat_external_db/normalize.py index ccb26c2c90d..8b8bf76fccb 100644 --- a/boefjes/boefjes/plugins/kat_external_db/normalize.py +++ b/boefjes/boefjes/plugins/kat_external_db/normalize.py @@ -1,7 +1,7 @@ import json import logging +from collections.abc import Iterator from ipaddress import IPv4Interface, ip_interface -from typing import Iterator, Union from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, DeclaredScanProfile @@ -29,7 +29,7 @@ def follow_path_in_dict(path, path_dict): return path_dict -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterator[OOI]: """Yields hostnames, IPv4/6 addresses or netblocks.""" results = json.loads(raw) network = Network(name=normalizer_meta.raw_data.boefje_meta.arguments["input"]["name"]) diff --git a/boefjes/boefjes/plugins/kat_fierce/main.py b/boefjes/boefjes/plugins/kat_fierce/main.py index 0bdc7f5042e..641e3953d03 100644 --- a/boefjes/boefjes/plugins/kat_fierce/main.py +++ b/boefjes/boefjes/plugins/kat_fierce/main.py @@ -1,11 +1,10 @@ import json -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta from boefjes.plugins.kat_fierce.fierce import fierce, parse_args -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] hostname = input_["name"] args = parse_args(["--domain", hostname]) diff --git a/boefjes/boefjes/plugins/kat_fierce/normalize.py b/boefjes/boefjes/plugins/kat_fierce/normalize.py index 9720d350f40..742b90f345f 100644 --- a/boefjes/boefjes/plugins/kat_fierce/normalize.py +++ b/boefjes/boefjes/plugins/kat_fierce/normalize.py @@ -1,6 +1,6 @@ import json +from collections.abc import Iterable from ipaddress import IPv4Address, ip_address -from typing import Iterable, Union from tldextract import tldextract @@ -10,7 +10,7 @@ from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) internet = Network(name="internet") diff --git a/boefjes/boefjes/plugins/kat_green_hosting/main.py b/boefjes/boefjes/plugins/kat_green_hosting/main.py index da1af1b8a0f..36a95293cbe 100644 --- a/boefjes/boefjes/plugins/kat_green_hosting/main.py +++ b/boefjes/boefjes/plugins/kat_green_hosting/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import requests from boefjes.job_models import BoefjeMeta @@ -7,7 +5,7 @@ API_URL = "https://admin.thegreenwebfoundation.org" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] hostname = input_["hostname"]["name"] diff --git a/boefjes/boefjes/plugins/kat_green_hosting/normalize.py b/boefjes/boefjes/plugins/kat_green_hosting/normalize.py index afdab6f1c98..d8d91c0ecac 100644 --- a/boefjes/boefjes/plugins/kat_green_hosting/normalize.py +++ b/boefjes/boefjes/plugins/kat_green_hosting/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: boefje_meta = normalizer_meta.raw_data.boefje_meta data = json.loads(raw.decode()) diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/main.py b/boefjes/boefjes/plugins/kat_kat_finding_types/main.py index 32354031f45..09795d98d67 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/main.py @@ -1,12 +1,11 @@ import json -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta FINDING_TYPE_PATH = "boefjes/plugins/kat_kat_finding_types/kat_finding_types.json" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: with open(FINDING_TYPE_PATH) as json_file: data = json.load(json_file) return [(set(), json.dumps(data))] diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py index 2502e4b3c71..46bcb0eb502 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -18,7 +18,7 @@ } -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: kat_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_leakix/main.py b/boefjes/boefjes/plugins/kat_leakix/main.py index 6aa46d9bb21..08615a6d35b 100644 --- a/boefjes/boefjes/plugins/kat_leakix/main.py +++ b/boefjes/boefjes/plugins/kat_leakix/main.py @@ -1,7 +1,6 @@ import json import re from os import getenv -from typing import List, Tuple, Union from urllib.parse import quote_plus import requests @@ -9,7 +8,7 @@ from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: pk = boefje_meta.input_ooi results = [] if re.match(pk, "IPAddressV4|.*") or re.match(pk, "IPAddressV6|.*"): diff --git a/boefjes/boefjes/plugins/kat_leakix/normalize.py b/boefjes/boefjes/plugins/kat_leakix/normalize.py index c8b271e5b5e..cbe9efcf428 100644 --- a/boefjes/boefjes/plugins/kat_leakix/normalize.py +++ b/boefjes/boefjes/plugins/kat_leakix/normalize.py @@ -2,8 +2,7 @@ import json import re from collections.abc import Iterable -from typing import Iterable as Iterable_ -from typing import Union +from collections.abc import Iterable as Iterable_ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -23,7 +22,7 @@ from octopoes.models.ooi.software import Software, SoftwareInstance -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable_[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable_[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta diff --git a/boefjes/boefjes/plugins/kat_log4shell/main.py b/boefjes/boefjes/plugins/kat_log4shell/main.py index b8cf89472fa..65933c9a7ed 100755 --- a/boefjes/boefjes/plugins/kat_log4shell/main.py +++ b/boefjes/boefjes/plugins/kat_log4shell/main.py @@ -2,7 +2,6 @@ import logging from base64 import b64encode from os import getenv -from typing import Dict, List, Optional, Tuple, Union from urllib.parse import urlparse import requests @@ -15,7 +14,7 @@ logging.basicConfig(level=logging.INFO) -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] host = input_["name"] identifier = boefje_meta.id @@ -43,7 +42,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: return [(set(), json.dumps(output).encode())] -def check_with_header(url_input: str, header_name: str, payload: str, timeout: int) -> Optional[str]: +def check_with_header(url_input: str, header_name: str, payload: str, timeout: int) -> str | None: try: response = requests.get(url_input, headers={header_name: payload}, verify=False, timeout=timeout) # noqa: S501 @@ -52,7 +51,7 @@ def check_with_header(url_input: str, header_name: str, payload: str, timeout: i logging.error("HTTP connection to %s URL error: %s", url_input, e) -def check(url_input: str, payload: str, timeout: int) -> Optional[str]: +def check(url_input: str, payload: str, timeout: int) -> str | None: try: response = requests.get(f"{url_input}{payload}", verify=False, timeout=timeout) # noqa: S501 @@ -61,7 +60,7 @@ def check(url_input: str, payload: str, timeout: int) -> Optional[str]: logging.error("HTTP connection to %s URL error: %s", url_input, e) -def get_payloads(url_input: str, reply_host: str, identifier: str) -> Dict[str, str]: +def get_payloads(url_input: str, reply_host: str, identifier: str) -> dict[str, str]: payloads = [ "${{jndi:ldap://{}/test.class}}", "${{jndi:dns://{}:53/test.class}}", diff --git a/boefjes/boefjes/plugins/kat_manual/csv/normalize.py b/boefjes/boefjes/plugins/kat_manual/csv/normalize.py index aca4d2dac4c..311be7688d5 100644 --- a/boefjes/boefjes/plugins/kat_manual/csv/normalize.py +++ b/boefjes/boefjes/plugins/kat_manual/csv/normalize.py @@ -1,8 +1,8 @@ import csv import io import logging +from collections.abc import Iterable from ipaddress import IPv4Network, ip_network -from typing import Dict, Iterable, List, Tuple, Union from pydantic import ValidationError @@ -24,7 +24,7 @@ logger = logging.getLogger(__name__) -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: reference_cache = {"Network": {"internet": Network(name="internet")}} yield from process_csv(raw, reference_cache) @@ -76,7 +76,7 @@ def get_object_type(csv_data: io.StringIO) -> str: raise ValueError("Unsupported OOI type for csv normalizer.") -def get_ooi_from_csv(ooi_type_name: str, values: Dict[str, str], reference_cache) -> Tuple[OOIType, List]: +def get_ooi_from_csv(ooi_type_name: str, values: dict[str, str], reference_cache) -> tuple[OOIType, list]: skip_properties = ("object_type", "scan_profile", "primary_key") ooi_type = OOI_TYPES[ooi_type_name]["type"] diff --git a/boefjes/boefjes/plugins/kat_manual/single_ooi/normalize.py b/boefjes/boefjes/plugins/kat_manual/single_ooi/normalize.py index efab34b9079..4edc9fdcd99 100644 --- a/boefjes/boefjes/plugins/kat_manual/single_ooi/normalize.py +++ b/boefjes/boefjes/plugins/kat_manual/single_ooi/normalize.py @@ -1,11 +1,11 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: for declaration in json.loads(raw.decode()): yield { "type": "declaration", diff --git a/boefjes/boefjes/plugins/kat_manyportsopen/main.py b/boefjes/boefjes/plugins/kat_manyportsopen/main.py index 0ebe32658f5..4a086a2f8df 100644 --- a/boefjes/boefjes/plugins/kat_manyportsopen/main.py +++ b/boefjes/boefjes/plugins/kat_manyportsopen/main.py @@ -1,11 +1,10 @@ import json -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta # Until we have an implementation of bits, all logic will happen in normalizer -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: results = {} return [(set(), json.dumps(results))] diff --git a/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py b/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py index 06e2a3e8e91..89a7df26931 100644 --- a/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py +++ b/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py @@ -1,5 +1,5 @@ +from collections.abc import Iterable from datetime import datetime, timedelta, timezone -from typing import Iterable, Union from boefjes.config import settings from boefjes.job_models import NormalizerMeta @@ -9,7 +9,7 @@ from octopoes.models.ooi.network import IPPort -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: boefje_meta = normalizer_meta.raw_data.boefje_meta ooi = Reference.from_str(boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_masscan/main.py b/boefjes/boefjes/plugins/kat_masscan/main.py index 1a4819ff0b1..340cabdff7d 100644 --- a/boefjes/boefjes/plugins/kat_masscan/main.py +++ b/boefjes/boefjes/plugins/kat_masscan/main.py @@ -2,7 +2,7 @@ import logging import os import tarfile -from typing import ByteString, Generator, List, Tuple, Union +from collections.abc import ByteString, Generator import docker @@ -52,7 +52,7 @@ def readinto(self, memory_view: ByteString) -> int: return outlen -def get_file_from_container(container: docker.models.containers.Container, path: str) -> Union[bytes, None]: +def get_file_from_container(container: docker.models.containers.Container, path: str) -> bytes | None: """Returns a file from a docker container.""" try: stream, _ = container.get_archive(path) @@ -101,7 +101,7 @@ def run_masscan(target_ip) -> bytes: return output -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Creates webpage and takes capture using Playwright container.""" input_ = boefje_meta.arguments["input"] ip_range = f"{input_['start_ip']['address']}/{str(input_['mask'])}" diff --git a/boefjes/boefjes/plugins/kat_masscan/normalize.py b/boefjes/boefjes/plugins/kat_masscan/normalize.py index d6b221003d4..68baadf6c21 100644 --- a/boefjes/boefjes/plugins/kat_masscan/normalize.py +++ b/boefjes/boefjes/plugins/kat_masscan/normalize.py @@ -1,7 +1,7 @@ import ipaddress import json import logging -from typing import Iterable, Iterator, Union +from collections.abc import Iterable, Iterator from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -40,7 +40,7 @@ def get_ip_ports_and_service(ip_with_ports: dict, network: Network, netblock: Re yield ip_port -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: """Parse Masscan JSON and yield relevant network, IPs and ports.""" try: raw = json.loads(raw) if raw else [] diff --git a/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py b/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py index 0cb57aed19c..5d7142734ba 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py +++ b/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py @@ -1,6 +1,5 @@ from ipaddress import IPv6Network, ip_network from os import getenv -from typing import List, Tuple, Union import docker @@ -12,13 +11,13 @@ TOP_PORTS_MIN = 1 -def run_nmap(args: List[str]) -> str: +def run_nmap(args: list[str]) -> str: """Run Nmap in Docker.""" client = docker.from_env() return client.containers.run(NMAP_IMAGE, args, remove=True).decode() -def build_nmap_arguments(ip_range: str, top_ports: int, protocol_str: str) -> List[str]: +def build_nmap_arguments(ip_range: str, top_ports: int, protocol_str: str) -> list[str]: """Build nmap arguments from the hosts IP with the required ports.""" if protocol_str not in ["S", "U"]: raise ValueError('Protocol should be "S" or "U"') @@ -33,7 +32,7 @@ def build_nmap_arguments(ip_range: str, top_ports: int, protocol_str: str) -> Li return args -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Build Nmap arguments and return results to normalizer.""" ip_range = f"{boefje_meta.arguments['input']['start_ip']['address']}/{str(boefje_meta.arguments['input']['mask'])}" top_ports_tcp = int(getenv("TOP_PORTS_TCP", 250)) diff --git a/boefjes/boefjes/plugins/kat_nmap_ports/main.py b/boefjes/boefjes/plugins/kat_nmap_ports/main.py index c07e7967641..45cc2850660 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ports/main.py +++ b/boefjes/boefjes/plugins/kat_nmap_ports/main.py @@ -1,7 +1,6 @@ import re from ipaddress import IPv6Address, ip_address from os import getenv -from typing import List, Tuple, Union import docker @@ -13,13 +12,13 @@ ) -def run_nmap(args: List[str]) -> str: +def run_nmap(args: list[str]) -> str: """Run Nmap in Docker.""" client = docker.from_env() return client.containers.run(NMAP_IMAGE, args, remove=True).decode() -def build_nmap_arguments(host: str, ports: str) -> List[str]: +def build_nmap_arguments(host: str, ports: str) -> list[str]: """Build nmap arguments from the hosts IP with the required ports.""" ip = ip_address(host) args = ["nmap", "-T4", "-Pn", "-r", "-v10", "-sV", "-sS", "-sU", f"-p{validate_ports(ports=ports)}"] @@ -61,7 +60,7 @@ def validate_ports( return ports -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Build Nmap arguments and return results to normalizer.""" return [ (set(), run_nmap(build_nmap_arguments(host=boefje_meta.arguments["input"]["address"], ports=getenv("PORTS")))) diff --git a/boefjes/boefjes/plugins/kat_nmap_tcp/main.py b/boefjes/boefjes/plugins/kat_nmap_tcp/main.py index 4d9e692480c..6cf96ee0410 100644 --- a/boefjes/boefjes/plugins/kat_nmap_tcp/main.py +++ b/boefjes/boefjes/plugins/kat_nmap_tcp/main.py @@ -1,6 +1,5 @@ from ipaddress import IPv6Address, ip_address from os import getenv -from typing import List, Tuple, Union import docker @@ -12,13 +11,13 @@ TOP_PORTS_MIN = 1 -def run_nmap(args: List[str]) -> str: +def run_nmap(args: list[str]) -> str: """Run Nmap in Docker.""" client = docker.from_env() return client.containers.run(NMAP_IMAGE, args, remove=True).decode() -def build_nmap_arguments(host: str, top_ports: int) -> List[str]: +def build_nmap_arguments(host: str, top_ports: int) -> list[str]: """Returns Nmap arguments to use based on protocol and top_ports for host.""" ip = ip_address(host) args = ["--open", "-T4", "-Pn", "-r", "-v10", "-sV", "-sS", "--top-ports", str(top_ports)] @@ -31,7 +30,7 @@ def build_nmap_arguments(host: str, top_ports: int) -> List[str]: return args -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Build Nmap arguments and return results to normalizer.""" top_ports = int(getenv("TOP_PORTS", TOP_PORTS_DEFAULT)) diff --git a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py index e6393297370..fde3ca9561e 100644 --- a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py +++ b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py @@ -1,5 +1,5 @@ import logging -from typing import Iterable, Iterator, Union +from collections.abc import Iterable, Iterator from libnmap.objects import NmapHost, NmapService from libnmap.parser import NmapParser @@ -54,7 +54,7 @@ def get_ip_ports_and_service(host: NmapHost, network: Network, netblock: Referen yield ip_service -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: """Decouple and parse Nmap XMLs and yield relevant network.""" # Multiple XMLs are concatenated through "\n\n". XMLs end with "\n"; we split on "\n\n\n". raw = raw.decode().split("\n\n\n") diff --git a/boefjes/boefjes/plugins/kat_nmap_udp/main.py b/boefjes/boefjes/plugins/kat_nmap_udp/main.py index 492f0354292..2f215fca03b 100644 --- a/boefjes/boefjes/plugins/kat_nmap_udp/main.py +++ b/boefjes/boefjes/plugins/kat_nmap_udp/main.py @@ -1,6 +1,5 @@ from ipaddress import IPv6Address, ip_address from os import getenv -from typing import List, Tuple, Union import docker @@ -12,13 +11,13 @@ TOP_PORTS_MIN = 1 -def run_nmap(args: List[str]) -> str: +def run_nmap(args: list[str]) -> str: """Run Nmap in Docker.""" client = docker.from_env() return client.containers.run(NMAP_IMAGE, args, remove=True).decode() -def build_nmap_arguments(host: str, top_ports: int) -> List[str]: +def build_nmap_arguments(host: str, top_ports: int) -> list[str]: """Returns Nmap arguments to use based on protocol and top_ports for host.""" ip = ip_address(host) args = ["--open", "-T4", "-Pn", "-r", "-v10", "-sV", "-sU", "--top-ports", str(top_ports)] @@ -31,7 +30,7 @@ def build_nmap_arguments(host: str, top_ports: int) -> List[str]: return args -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Build Nmap arguments and return results to normalizer.""" top_ports = int(getenv("TOP_PORTS_UDP", TOP_PORTS_DEFAULT)) diff --git a/boefjes/boefjes/plugins/kat_nuclei_cve/main.py b/boefjes/boefjes/plugins/kat_nuclei_cve/main.py index a495cc00cb7..69e103d8b2c 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_cve/main.py +++ b/boefjes/boefjes/plugins/kat_nuclei_cve/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -18,7 +16,7 @@ def verify_hostname_meta(input_ooi): return input_ooi["name"] -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() # Checks if the url is of object HostnameHTTPURL or Hostname diff --git a/boefjes/boefjes/plugins/kat_nuclei_cve/normalize.py b/boefjes/boefjes/plugins/kat_nuclei_cve/normalize.py index 281dd2b5e94..4a51db6692c 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_cve/normalize.py +++ b/boefjes/boefjes/plugins/kat_nuclei_cve/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import CVEFindingType, Finding -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: url_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) if raw: for line in raw.splitlines(): diff --git a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/main.py b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/main.py index 68312983bc7..9d40a4a6274 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/main.py +++ b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -18,7 +16,7 @@ def verify_hostname_meta(input_ooi): return input_ooi["name"] -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() # Checks if the url is of object HostnameHTTPURL or Hostname diff --git a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalize.py b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalize.py index d0d1b65002e..dd16b99a2be 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalize.py +++ b/boefjes/boefjes/plugins/kat_nuclei_exposed_panels/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: url_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) if raw: for line in raw.splitlines(): diff --git a/boefjes/boefjes/plugins/kat_nuclei_take_over/main.py b/boefjes/boefjes/plugins/kat_nuclei_take_over/main.py index 9cad41c2439..f62fc17d81e 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_take_over/main.py +++ b/boefjes/boefjes/plugins/kat_nuclei_take_over/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -18,7 +16,7 @@ def verify_hostname_meta(input_ooi): return input_ooi["name"] -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() # Checks if the url is of object HostnameHTTPURL or Hostname diff --git a/boefjes/boefjes/plugins/kat_nuclei_take_over/normalize.py b/boefjes/boefjes/plugins/kat_nuclei_take_over/normalize.py index 498f02da1da..1c0af521e42 100644 --- a/boefjes/boefjes/plugins/kat_nuclei_take_over/normalize.py +++ b/boefjes/boefjes/plugins/kat_nuclei_take_over/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: url_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) if raw: for line in raw.splitlines(): diff --git a/boefjes/boefjes/plugins/kat_rdns/main.py b/boefjes/boefjes/plugins/kat_rdns/main.py index 1b81d86744b..228cf0c1711 100644 --- a/boefjes/boefjes/plugins/kat_rdns/main.py +++ b/boefjes/boefjes/plugins/kat_rdns/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import dns from dns.resolver import Answer @@ -7,7 +5,7 @@ from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """return results to normalizer.""" ip = boefje_meta.arguments["input"]["address"] diff --git a/boefjes/boefjes/plugins/kat_rdns/normalize.py b/boefjes/boefjes/plugins/kat_rdns/normalize.py index 8096bcb9319..1ff2e970c46 100644 --- a/boefjes/boefjes/plugins/kat_rdns/normalize.py +++ b/boefjes/boefjes/plugins/kat_rdns/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, Union +from collections.abc import Iterable from dns.message import from_text from dns.rdtypes.ANY.PTR import PTR @@ -10,7 +10,7 @@ from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: ooi = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) input_ = normalizer_meta.raw_data.boefje_meta.arguments["input"] answers = raw.decode() diff --git a/boefjes/boefjes/plugins/kat_report_data/normalize.py b/boefjes/boefjes/plugins/kat_report_data/normalize.py index 9bd2f984780..768c73358d6 100644 --- a/boefjes/boefjes/plugins/kat_report_data/normalize.py +++ b/boefjes/boefjes/plugins/kat_report_data/normalize.py @@ -1,11 +1,11 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI from octopoes.models.ooi.reports import ReportData -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: ooi = ReportData.model_validate_json(raw) yield { "type": "declaration", diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py b/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py index d5e1b08ecfb..288fd17642b 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/main.py @@ -1,11 +1,9 @@ -from typing import List, Tuple, Union - import requests from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: response = requests.get( "https://raw.githubusercontent.com/RetireJS/retire.js/v3/repository/jsrepository.json", timeout=30 ) diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py index c38c11c2196..b5a310c1e7a 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py @@ -1,7 +1,7 @@ import hashlib import json import logging -from typing import Dict, Iterable, List, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -19,7 +19,7 @@ } -def _hash_identifiers(identifiers: Dict[str, Union[str, List[str]]]) -> str: +def _hash_identifiers(identifiers: dict[str, str | list[str]]) -> str: pre_hash = "" for identifier in identifiers.values(): pre_hash += "".join(identifier) @@ -42,7 +42,7 @@ def _create_description(finding: dict) -> str: return description -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: retirejs_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_rpki/main.py b/boefjes/boefjes/plugins/kat_rpki/main.py index 1594d77cad3..d963533afe0 100644 --- a/boefjes/boefjes/plugins/kat_rpki/main.py +++ b/boefjes/boefjes/plugins/kat_rpki/main.py @@ -6,7 +6,6 @@ from datetime import datetime from os import getenv from pathlib import Path -from typing import Dict, List, Tuple, Union import requests from netaddr import IPAddress, IPNetwork @@ -21,7 +20,7 @@ HASHFUNC = "sha256" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] ip = input_["address"] now = datetime.utcnow() @@ -73,7 +72,7 @@ def cache_out_of_date() -> bool: return (now - cached_file_timestamp).total_seconds() > maxage -def refresh_rpki(algo: str) -> Tuple[Dict, Dict]: +def refresh_rpki(algo: str) -> tuple[dict, dict]: source_url = getenv("RPKI_SOURCE_URL", RPKI_SOURCE_URL) response = requests.get(source_url, allow_redirects=True, timeout=30) response.raise_for_status() diff --git a/boefjes/boefjes/plugins/kat_rpki/normalize.py b/boefjes/boefjes/plugins/kat_rpki/normalize.py index f778cad8c3d..8e88be64b17 100644 --- a/boefjes/boefjes/plugins/kat_rpki/normalize.py +++ b/boefjes/boefjes/plugins/kat_rpki/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) ooi = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py index ac8ed22afd7..0ca93f35932 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/main.py @@ -1,7 +1,6 @@ import ipaddress import json from os import getenv -from typing import List, Tuple, Union import requests from forcediphttpsadapter.adapters import ForcedIPHTTPSAdapter @@ -10,7 +9,7 @@ from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] netloc = input_["hostname"]["name"] scheme = input_["ip_service"]["service"]["name"] diff --git a/boefjes/boefjes/plugins/kat_security_txt_downloader/normalize.py b/boefjes/boefjes/plugins/kat_security_txt_downloader/normalize.py index 9c9c463c4b3..4019c80de96 100644 --- a/boefjes/boefjes/plugins/kat_security_txt_downloader/normalize.py +++ b/boefjes/boefjes/plugins/kat_security_txt_downloader/normalize.py @@ -1,6 +1,6 @@ import ipaddress import json -from typing import Iterable, Union +from collections.abc import Iterable from urllib.parse import urlparse from boefjes.job_models import NormalizerMeta @@ -11,7 +11,7 @@ from octopoes.models.ooi.web import URL, SecurityTXT, Website -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta website_original = Reference.from_str(boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_shodan/main.py b/boefjes/boefjes/plugins/kat_shodan/main.py index 7bd1e0122a5..d87ae5ae3cb 100644 --- a/boefjes/boefjes/plugins/kat_shodan/main.py +++ b/boefjes/boefjes/plugins/kat_shodan/main.py @@ -2,14 +2,13 @@ import logging from ipaddress import ip_address from os import getenv -from typing import List, Tuple, Union import shodan from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: api = shodan.Shodan(getenv("SHODAN_API")) input_ = boefje_meta.arguments["input"] ip = input_["address"] diff --git a/boefjes/boefjes/plugins/kat_shodan/normalize.py b/boefjes/boefjes/plugins/kat_shodan/normalize.py index 9042968a4ca..eb8824a703c 100644 --- a/boefjes/boefjes/plugins/kat_shodan/normalize.py +++ b/boefjes/boefjes/plugins/kat_shodan/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -8,7 +8,7 @@ from octopoes.models.ooi.network import IPPort, PortState, Protocol -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) ooi = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_snyk/check_version.py b/boefjes/boefjes/plugins/kat_snyk/check_version.py index 69dbdd8b976..925d2d91752 100644 --- a/boefjes/boefjes/plugins/kat_snyk/check_version.py +++ b/boefjes/boefjes/plugins/kat_snyk/check_version.py @@ -1,7 +1,6 @@ import logging import re from enum import Enum -from typing import List logger = logging.getLogger(__name__) @@ -71,7 +70,7 @@ def check_version(version1: str, version2: str) -> VersionCheck: return check_version(version1_split[1], version2_split[1]) -def check_version_agains_versionlist(my_version: str, all_versions: List[str]): +def check_version_agains_versionlist(my_version: str, all_versions: list[str]): lowerbound = all_versions.pop(0).strip() upperbound = None diff --git a/boefjes/boefjes/plugins/kat_snyk/main.py b/boefjes/boefjes/plugins/kat_snyk/main.py index 4a36ba7bb5d..f587d00d2b6 100755 --- a/boefjes/boefjes/plugins/kat_snyk/main.py +++ b/boefjes/boefjes/plugins/kat_snyk/main.py @@ -1,5 +1,4 @@ import json -from typing import List, Tuple, Union import requests from bs4 import BeautifulSoup @@ -8,7 +7,7 @@ from boefjes.plugins.kat_snyk import check_version -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"]["software"] software_name = input_["name"] software_version = input_["version"] diff --git a/boefjes/boefjes/plugins/kat_snyk/normalize.py b/boefjes/boefjes/plugins/kat_snyk/normalize.py index 3a6dc44063c..52cf6b6e8d5 100755 --- a/boefjes/boefjes/plugins/kat_snyk/normalize.py +++ b/boefjes/boefjes/plugins/kat_snyk/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_snyk import check_version @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py b/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py index a353b563303..9ebc006900c 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/main.py @@ -1,6 +1,5 @@ import json import re -from typing import List, Tuple, Union import requests from bs4 import BeautifulSoup @@ -8,7 +7,7 @@ from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: snyk_id = boefje_meta.arguments["input"]["id"] url_snyk = f"https://snyk.io/vuln/{snyk_id}" page = requests.get(url_snyk, timeout=30) diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py index 40ee452e0b0..41bfdc294e2 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py @@ -1,6 +1,6 @@ import json import logging -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI @@ -25,7 +25,7 @@ def get_risk_level(severity_score): return None -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: snyk_finding_type_id = normalizer_meta.raw_data.boefje_meta.arguments["input"]["id"] data = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_ssl_certificates/main.py b/boefjes/boefjes/plugins/kat_ssl_certificates/main.py index 23e3bd2cfcf..8f9782cbc9d 100644 --- a/boefjes/boefjes/plugins/kat_ssl_certificates/main.py +++ b/boefjes/boefjes/plugins/kat_ssl_certificates/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -7,7 +5,7 @@ OPENSSL_IMAGE = "alpine/openssl:latest" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() input_ = boefje_meta.arguments["input"] hostname = input_["hostname"]["name"] diff --git a/boefjes/boefjes/plugins/kat_ssl_certificates/normalize.py b/boefjes/boefjes/plugins/kat_ssl_certificates/normalize.py index de1da0c25e3..1ffd6edca63 100644 --- a/boefjes/boefjes/plugins/kat_ssl_certificates/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssl_certificates/normalize.py @@ -2,7 +2,7 @@ import ipaddress import logging import re -from typing import Iterable, List, Tuple, Union +from collections.abc import Iterable import cryptography from cryptography import x509 @@ -34,7 +34,7 @@ def find_between(s: str, first: str, last: str) -> str: return "" -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: # only get the first part of certificates contents = find_between(raw.decode(), "Certificate chain", "Certificate chain") @@ -95,7 +95,7 @@ def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI def read_certificates( contents: str, website_reference: Reference -) -> Tuple[List[X509Certificate], List[SubjectAlternativeName], List[Hostname]]: +) -> tuple[list[X509Certificate], list[SubjectAlternativeName], list[Hostname]]: # iterate through the PEM certificates and decode them certificates = [] certificate_subject_alternative_names = [] diff --git a/boefjes/boefjes/plugins/kat_ssl_scan/main.py b/boefjes/boefjes/plugins/kat_ssl_scan/main.py index 92d6e87c2dc..abd24128aef 100644 --- a/boefjes/boefjes/plugins/kat_ssl_scan/main.py +++ b/boefjes/boefjes/plugins/kat_ssl_scan/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -7,7 +5,7 @@ SSLSCAN_IMAGE = "breezethink/sslscan:latest" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() input_ = boefje_meta.arguments["input"] hostname = input_["hostname"]["name"] diff --git a/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py b/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py index b8031f759b4..c7aa8b76c5e 100644 --- a/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py +++ b/boefjes/boefjes/plugins/kat_ssl_scan/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, Union +from collections.abc import Iterable import defusedxml.ElementTree as ET @@ -7,7 +7,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: root = ET.fromstring(raw) website_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/main.py b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/main.py index 7482702704a..f553c4ae521 100644 --- a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/main.py +++ b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/main.py @@ -1,6 +1,5 @@ import logging from ipaddress import ip_address -from typing import List, Tuple, Union import docker @@ -10,7 +9,7 @@ SSL_TEST_IMAGE = "drwetter/testssl.sh:3.2" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] ip_port = input_["ip_port"]["port"] address = input_["ip_port"]["address"]["address"] diff --git a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalize.py b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalize.py index b145df2e0e1..68aa57d56f3 100644 --- a/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalize.py +++ b/boefjes/boefjes/plugins/kat_testssl_sh_ciphers/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Dict, Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.service import TLSCipher -def parse_cipher(cipher: Dict) -> Union[Dict, None]: +def parse_cipher(cipher: dict) -> dict | None: if cipher["id"].startswith("cipher-tls"): parts = cipher["finding"].split() @@ -40,7 +40,7 @@ def parse_cipher(cipher: Dict) -> Union[Dict, None]: return cipher_dict -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: boefje_meta = normalizer_meta.raw_data.boefje_meta input_ooi = Reference.from_str(boefje_meta.input_ooi) output = json.loads(raw) diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/check_images/normalize.py b/boefjes/boefjes/plugins/kat_webpage_analysis/check_images/normalize.py index f29336ecfd1..e55837500e0 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/check_images/normalize.py +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/check_images/normalize.py @@ -1,5 +1,5 @@ +from collections.abc import Iterable from io import BytesIO -from typing import Iterable, Union from PIL import Image, UnidentifiedImageError from PIL.ExifTags import TAGS @@ -10,7 +10,7 @@ from octopoes.models.ooi.web import ImageMetadata -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: # fetch a reference to the original resource where these headers where downloaded from resource = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) image = Image.open(BytesIO(raw)) diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py b/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py index 8da967a7e4b..45513018419 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, Union +from collections.abc import Iterable from urllib.parse import urljoin import validators @@ -10,7 +10,7 @@ from octopoes.models.ooi.web import URL -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: soup = BeautifulSoup(raw, "html.parser") images = set([img["src"] for img in soup.find_all("img", src=True)]) diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/headers/normalize.py b/boefjes/boefjes/plugins/kat_webpage_analysis/headers/normalize.py index 8c71427bfb0..f131ba55e48 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/headers/normalize.py +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/headers/normalize.py @@ -1,12 +1,12 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.web import HTTPHeader -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: # fetch a reference to the original resource where these headers where downloaded from resource = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/main.py b/boefjes/boefjes/plugins/kat_webpage_analysis/main.py index c654e3d7d93..a422a25d3ed 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/main.py +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/main.py @@ -2,7 +2,6 @@ import json import mimetypes from os import getenv -from typing import List, Tuple, Union from urllib.parse import urlparse, urlunsplit import requests @@ -14,7 +13,7 @@ ALLOWED_CONTENT_TYPES = mimetypes.types_map.values() -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] useragent = getenv("USERAGENT", default="OpenKAT") diff --git a/boefjes/boefjes/plugins/kat_webpage_capture/main.py b/boefjes/boefjes/plugins/kat_webpage_capture/main.py index 242a0e99571..86aef6b0bf6 100644 --- a/boefjes/boefjes/plugins/kat_webpage_capture/main.py +++ b/boefjes/boefjes/plugins/kat_webpage_capture/main.py @@ -2,7 +2,7 @@ import logging import os import tarfile -from typing import ByteString, Generator, List, Tuple, Union +from collections.abc import ByteString, Generator import docker @@ -93,7 +93,7 @@ def build_playwright_command(webpage: str, browser: str, tmp_path: str) -> str: ] -def run_playwright(webpage: str, browser: str) -> Tuple[bytes]: +def run_playwright(webpage: str, browser: str) -> tuple[bytes]: """Run Playwright in Docker.""" tmp_path = "/tmp/output" # noqa: S108 client = docker.from_env() @@ -128,7 +128,7 @@ def run_playwright(webpage: str, browser: str) -> Tuple[bytes]: container.remove() -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Creates webpage and takes capture using Playwright container.""" input_ = boefje_meta.arguments["input"] webpage = f"{input_['scheme']}://{input_['netloc']['name']}{input_['path']}" diff --git a/boefjes/boefjes/plugins/kat_website_software/main.py b/boefjes/boefjes/plugins/kat_website_software/main.py index 4008777fbe0..c8faa44f342 100644 --- a/boefjes/boefjes/plugins/kat_website_software/main.py +++ b/boefjes/boefjes/plugins/kat_website_software/main.py @@ -1,5 +1,4 @@ import platform -from typing import List, Tuple, Union import docker @@ -18,7 +17,7 @@ def run_wappalyzer(url: str) -> str: return client.containers.run(WAPPALYZER_IMAGE, ["wappalyzer", url], remove=True).decode() -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] hostname = input_["netloc"]["name"] diff --git a/boefjes/boefjes/plugins/kat_website_software/normalize.py b/boefjes/boefjes/plugins/kat_website_software/normalize.py index 81dcc849a06..e85b01b6357 100644 --- a/boefjes/boefjes/plugins/kat_website_software/normalize.py +++ b/boefjes/boefjes/plugins/kat_website_software/normalize.py @@ -1,5 +1,5 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -8,7 +8,7 @@ from octopoes.models.ooi.web import URL -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: results = json.loads(raw) boefje_meta = normalizer_meta.raw_data.boefje_meta diff --git a/boefjes/boefjes/plugins/kat_wpscan/main.py b/boefjes/boefjes/plugins/kat_wpscan/main.py index ac29fb5ceed..17e5a52dad8 100644 --- a/boefjes/boefjes/plugins/kat_wpscan/main.py +++ b/boefjes/boefjes/plugins/kat_wpscan/main.py @@ -1,6 +1,5 @@ """Boefje script for scanning wordpress sites using wpscan""" from os import getenv -from typing import List, Tuple, Union import docker @@ -9,7 +8,7 @@ WPSCAN_IMAGE = "wpscanteam/wpscan:latest" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: input_ = boefje_meta.arguments["input"] if input_["software"]["name"] != "WordPress" or ( diff --git a/boefjes/boefjes/plugins/kat_wpscan/normalize.py b/boefjes/boefjes/plugins/kat_wpscan/normalize.py index ba6ab6bf52a..bb210457265 100644 --- a/boefjes/boefjes/plugins/kat_wpscan/normalize.py +++ b/boefjes/boefjes/plugins/kat_wpscan/normalize.py @@ -1,5 +1,5 @@ import json -from typing import Iterable, Union +from collections.abc import Iterable from wpscan_out_parse import WPScanJsonParser @@ -8,7 +8,7 @@ from octopoes.models.ooi.findings import CVEFindingType, Finding -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: url_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) if raw: diff --git a/boefjes/boefjes/plugins/pdio_subfinder/main.py b/boefjes/boefjes/plugins/pdio_subfinder/main.py index 28e348d1d27..9b2a19a5575 100644 --- a/boefjes/boefjes/plugins/pdio_subfinder/main.py +++ b/boefjes/boefjes/plugins/pdio_subfinder/main.py @@ -1,5 +1,3 @@ -from typing import List, Tuple, Union - import docker from boefjes.job_models import BoefjeMeta @@ -7,7 +5,7 @@ SUBFINDER_IMAGE = "projectdiscovery/subfinder:latest" -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: client = docker.from_env() input_ = boefje_meta.arguments["input"] hostname = input_["name"] diff --git a/boefjes/boefjes/plugins/pdio_subfinder/normalize.py b/boefjes/boefjes/plugins/pdio_subfinder/normalize.py index 7aa763a03f5..965b4ab5281 100644 --- a/boefjes/boefjes/plugins/pdio_subfinder/normalize.py +++ b/boefjes/boefjes/plugins/pdio_subfinder/normalize.py @@ -1,4 +1,4 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference @@ -6,7 +6,7 @@ from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: hostname_ooi_reference = Reference.from_str(normalizer_meta.raw_data.boefje_meta.input_ooi) network_reference = Network(name=hostname_ooi_reference.tokenized.network.name).reference diff --git a/boefjes/boefjes/runtime_interfaces.py b/boefjes/boefjes/runtime_interfaces.py index a955189b7d2..fb25de68459 100644 --- a/boefjes/boefjes/runtime_interfaces.py +++ b/boefjes/boefjes/runtime_interfaces.py @@ -1,16 +1,15 @@ from enum import Enum -from typing import Dict, List, Tuple, Union from boefjes.job_models import BoefjeMeta, NormalizerMeta, NormalizerOutput class Handler: - def handle(self, item: Union[BoefjeMeta, NormalizerMeta]): + def handle(self, item: BoefjeMeta | NormalizerMeta): raise NotImplementedError() class BoefjeJobRunner: - def run(self, boefje_meta: BoefjeMeta, environment: Dict[str, str]) -> List[Tuple[set, Union[bytes, str]]]: + def run(self, boefje_meta: BoefjeMeta, environment: dict[str, str]) -> list[tuple[set, bytes | str]]: raise NotImplementedError() diff --git a/boefjes/boefjes/sql/db.py b/boefjes/boefjes/sql/db.py index b8f67f488eb..ec467d087e2 100644 --- a/boefjes/boefjes/sql/db.py +++ b/boefjes/boefjes/sql/db.py @@ -1,6 +1,7 @@ import logging +from collections.abc import Callable, Iterator from functools import cache -from typing import Any, Callable, Iterator, Type +from typing import Any from sqlalchemy import create_engine from sqlalchemy.engine import Engine, make_url @@ -42,5 +43,5 @@ def session_managed_iterator(service_factory: Callable[[Session], Any]) -> Itera class ObjectNotFoundException(Exception): - def __init__(self, cls: Type[SQL_BASE], **kwargs): # type: ignore + def __init__(self, cls: type[SQL_BASE], **kwargs): # type: ignore super().__init__(f"The object of type {cls} was not found for query parameters {kwargs}") diff --git a/boefjes/boefjes/sql/organisation_storage.py b/boefjes/boefjes/sql/organisation_storage.py index c72674e9937..5a010ada7bf 100644 --- a/boefjes/boefjes/sql/organisation_storage.py +++ b/boefjes/boefjes/sql/organisation_storage.py @@ -1,5 +1,4 @@ import logging -from typing import Dict, List from sqlalchemy.orm import Session @@ -28,7 +27,7 @@ def get_by_id(self, organisation_id: str) -> Organisation: return self.to_organisation(instance) - def get_all(self) -> Dict[str, Organisation]: + def get_all(self) -> dict[str, Organisation]: query = self.session.query(OrganisationInDB) return {organisation.id: self.to_organisation(organisation) for organisation in query.all()} @@ -50,7 +49,7 @@ def add_repository(self, organisation_id: str, repository_id: str) -> None: repo_in_db = self._db_repo_instance_by_id(repository_id) organisation_in_db.repositories.append(repo_in_db) - def get_repositories(self, organisation_id: str) -> List[Repository]: + def get_repositories(self, organisation_id: str) -> list[Repository]: instance = self._db_instance_by_id(organisation_id) return [SQLRepositoryStorage.to_repository(repo) for repo in instance.repositories] diff --git a/boefjes/boefjes/sql/plugin_enabled_storage.py b/boefjes/boefjes/sql/plugin_enabled_storage.py index 293715bc89f..677b68e1dc3 100644 --- a/boefjes/boefjes/sql/plugin_enabled_storage.py +++ b/boefjes/boefjes/sql/plugin_enabled_storage.py @@ -1,5 +1,4 @@ import logging -from typing import Dict, List, Optional from sqlalchemy.orm import Session, sessionmaker @@ -39,7 +38,7 @@ def get_by_id(self, plugin_id: str, repository_id: str, organisation_id: str) -> return instance.enabled - def get_all_enabled(self, organisation_id: str) -> Dict[str, List[str]]: + def get_all_enabled(self, organisation_id: str) -> dict[str, list[str]]: query = ( self.session.query(PluginStateInDB) .join(OrganisationInDB) @@ -48,7 +47,7 @@ def get_all_enabled(self, organisation_id: str) -> Dict[str, List[str]]: .filter(PluginStateInDB.enabled) ) - per_repository: Dict[str, List[str]] = {} + per_repository: dict[str, list[str]] = {} for state in query.all(): if state.repository.id not in per_repository: @@ -115,7 +114,7 @@ def to_plugin_state_in_db( def create_plugin_enabled_storage( - session: Optional[Session] = None, + session: Session | None = None, ) -> SQLPluginEnabledStorage: if not session: session = sessionmaker(bind=get_engine())() diff --git a/boefjes/boefjes/sql/repository_storage.py b/boefjes/boefjes/sql/repository_storage.py index 5f346459ded..9ba65769630 100644 --- a/boefjes/boefjes/sql/repository_storage.py +++ b/boefjes/boefjes/sql/repository_storage.py @@ -1,5 +1,4 @@ import logging -from typing import Dict from sqlalchemy.orm import Session @@ -24,7 +23,7 @@ def get_by_id(self, repository_id: str) -> Repository: return self.to_repository(instance) - def get_all(self) -> Dict[str, Repository]: + def get_all(self) -> dict[str, Repository]: query = self.session.query(RepositoryInDB) return {repository.id: self.to_repository(repository) for repository in query.all()} diff --git a/boefjes/boefjes/sql/session.py b/boefjes/boefjes/sql/session.py index 85915444bab..acce70a827e 100644 --- a/boefjes/boefjes/sql/session.py +++ b/boefjes/boefjes/sql/session.py @@ -1,5 +1,4 @@ import logging -from typing import Type from sqlalchemy.exc import DatabaseError from sqlalchemy.orm import Session @@ -28,7 +27,7 @@ def __init__(self, session: Session): def __enter__(self) -> "SessionMixin": return self - def __exit__(self, exc_type: Type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 + def __exit__(self, exc_type: type[Exception], exc_value: str, exc_traceback: str) -> None: # noqa: F841 if exc_type is not None: logger.error("An error occurred: %s. Rolling back session", exc_value, exc_info=True) self.session.rollback() diff --git a/boefjes/boefjes/sql/setting_storage.py b/boefjes/boefjes/sql/setting_storage.py index cd8b7cadd98..1b2b9cf3357 100644 --- a/boefjes/boefjes/sql/setting_storage.py +++ b/boefjes/boefjes/sql/setting_storage.py @@ -1,6 +1,5 @@ import json import logging -from typing import Dict from sqlalchemy.orm import Session @@ -21,7 +20,7 @@ def __init__(self, session: Session, encryption: EncryptMiddleware): super().__init__(session) - def upsert(self, values: Dict, organisation_id: str, plugin_id: str) -> None: + def upsert(self, values: dict, organisation_id: str, plugin_id: str) -> None: encrypted_values = self.encryption.encode(json.dumps(values)) try: @@ -37,7 +36,7 @@ def upsert(self, values: Dict, organisation_id: str, plugin_id: str) -> None: ) self.session.add(setting_in_db) - def get_all(self, organisation_id: str, plugin_id: str) -> Dict: + def get_all(self, organisation_id: str, plugin_id: str) -> dict: try: instance = self._db_instance_by_id(organisation_id, plugin_id) except SettingsNotFound: diff --git a/boefjes/tests/conftest.py b/boefjes/tests/conftest.py index bd607bea64f..e65a1b0e754 100644 --- a/boefjes/tests/conftest.py +++ b/boefjes/tests/conftest.py @@ -3,7 +3,6 @@ from datetime import datetime, timezone from multiprocessing import Manager from pathlib import Path -from typing import Dict, List, Optional, Tuple, Union from uuid import UUID import pytest @@ -22,8 +21,8 @@ class MockSchedulerClient(SchedulerClientInterface): def __init__( self, queue_response: bytes, - boefje_responses: List[bytes], - normalizer_responses: List[bytes], + boefje_responses: list[bytes], + normalizer_responses: list[bytes], log_path: Path, raise_on_empty_queue: Exception = KeyboardInterrupt, iterations_to_wait_for_exception: int = 0, @@ -38,15 +37,15 @@ def __init__( self.sleep_time = sleep_time self._iterations = 0 - self._tasks: Dict[str, Task] = multiprocessing.Manager().dict() - self._popped_items: Dict[str, QueuePrioritizedItem] = multiprocessing.Manager().dict() - self._pushed_items: Dict[str, Tuple[str, QueuePrioritizedItem]] = multiprocessing.Manager().dict() + self._tasks: dict[str, Task] = multiprocessing.Manager().dict() + self._popped_items: dict[str, QueuePrioritizedItem] = multiprocessing.Manager().dict() + self._pushed_items: dict[str, tuple[str, QueuePrioritizedItem]] = multiprocessing.Manager().dict() - def get_queues(self) -> List[Queue]: + def get_queues(self) -> list[Queue]: time.sleep(self.sleep_time) - return TypeAdapter(List[Queue]).validate_json(self.queue_response) + return TypeAdapter(list[Queue]).validate_json(self.queue_response) - def pop_item(self, queue: str) -> Optional[QueuePrioritizedItem]: + def pop_item(self, queue: str) -> QueuePrioritizedItem | None: time.sleep(self.sleep_time) try: @@ -71,7 +70,7 @@ def patch_task(self, task_id: UUID, status: TaskStatus) -> None: task.status = status self._tasks[str(task_id)] = task - def get_all_patched_tasks(self) -> List[Tuple[str, ...]]: + def get_all_patched_tasks(self) -> list[tuple[str, ...]]: with self.log_path.open() as f: return [tuple(x.strip().split(",")) for x in f] @@ -99,14 +98,14 @@ def __init__(self, exception=Exception): self.queue = Manager().Queue() self.exception = exception - def handle(self, item: Union[BoefjeMeta, NormalizerMeta]): + def handle(self, item: BoefjeMeta | NormalizerMeta): if str(item.id) == "9071c9fd-2b9f-440f-a524-ef1ca4824fd4": raise self.exception() time.sleep(self.sleep_time) self.queue.put(item) - def get_all(self) -> List[Union[BoefjeMeta, NormalizerMeta]]: + def get_all(self) -> list[BoefjeMeta | NormalizerMeta]: return [self.queue.get() for _ in range(self.queue.qsize())] diff --git a/boefjes/tests/loading.py b/boefjes/tests/loading.py index e81104c841c..3f8bb1c7bb6 100644 --- a/boefjes/tests/loading.py +++ b/boefjes/tests/loading.py @@ -1,6 +1,5 @@ import datetime from datetime import timezone -from typing import Optional from uuid import UUID from boefjes.config import BASE_DIR @@ -15,7 +14,7 @@ def get_dummy_data(filename: str) -> bytes: def get_boefje_meta( meta_id: UUID = UUID("d63d755b-6c23-44ab-8de6-8d144c448a71"), boefje_id: str = "kat_test.main", - input_ooi: Optional[str] = "Hostname|internet|test.org", + input_ooi: str | None = "Hostname|internet|test.org", ) -> BoefjeMeta: return BoefjeMeta( id=meta_id, diff --git a/boefjes/tests/modules/dummy_bad_normalizer_dict_structure/normalize.py b/boefjes/tests/modules/dummy_bad_normalizer_dict_structure/normalize.py index 8633ff420f5..0014fc74f1d 100644 --- a/boefjes/tests/modules/dummy_bad_normalizer_dict_structure/normalize.py +++ b/boefjes/tests/modules/dummy_bad_normalizer_dict_structure/normalize.py @@ -1,10 +1,10 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: yield { "I": "write", "bad": "normalizers", diff --git a/boefjes/tests/modules/dummy_bad_normalizer_return_type/normalize.py b/boefjes/tests/modules/dummy_bad_normalizer_return_type/normalize.py index 57aa53ff942..62008c48bfc 100644 --- a/boefjes/tests/modules/dummy_bad_normalizer_return_type/normalize.py +++ b/boefjes/tests/modules/dummy_bad_normalizer_return_type/normalize.py @@ -1,8 +1,8 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: yield 3 diff --git a/boefjes/tests/modules/dummy_boefje/main.py b/boefjes/tests/modules/dummy_boefje/main.py index a260f2507a9..3c47dc4782f 100644 --- a/boefjes/tests/modules/dummy_boefje/main.py +++ b/boefjes/tests/modules/dummy_boefje/main.py @@ -1,7 +1,5 @@ -from typing import List, Tuple, Union - from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: return [(set(), b"dummy-data")] diff --git a/boefjes/tests/modules/dummy_boefje_environment/main.py b/boefjes/tests/modules/dummy_boefje_environment/main.py index 6ea6829c693..df90edf0df5 100644 --- a/boefjes/tests/modules/dummy_boefje_environment/main.py +++ b/boefjes/tests/modules/dummy_boefje_environment/main.py @@ -1,8 +1,7 @@ from os import environ -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: return [(set(), repr(environ).encode())] diff --git a/boefjes/tests/modules/dummy_boefje_environment_with_pycache/main.py b/boefjes/tests/modules/dummy_boefje_environment_with_pycache/main.py index 6ea6829c693..df90edf0df5 100644 --- a/boefjes/tests/modules/dummy_boefje_environment_with_pycache/main.py +++ b/boefjes/tests/modules/dummy_boefje_environment_with_pycache/main.py @@ -1,8 +1,7 @@ from os import environ -from typing import List, Tuple, Union from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: return [(set(), repr(environ).encode())] diff --git a/boefjes/tests/modules/dummy_boefje_invalid_signature/main.py b/boefjes/tests/modules/dummy_boefje_invalid_signature/main.py index 01f8f3830d6..9850a84347c 100644 --- a/boefjes/tests/modules/dummy_boefje_invalid_signature/main.py +++ b/boefjes/tests/modules/dummy_boefje_invalid_signature/main.py @@ -1,6 +1,5 @@ # just an invalid dummy module -from typing import Tuple -def run(boefje_meta: str) -> Tuple[str, int]: +def run(boefje_meta: str) -> tuple[str, int]: return boefje_meta, 10 diff --git a/boefjes/tests/modules/dummy_boefje_runtime_exception/main.py b/boefjes/tests/modules/dummy_boefje_runtime_exception/main.py index f158d6ddd79..c54948ca9cf 100644 --- a/boefjes/tests/modules/dummy_boefje_runtime_exception/main.py +++ b/boefjes/tests/modules/dummy_boefje_runtime_exception/main.py @@ -1,7 +1,5 @@ -from typing import List, Tuple, Union - from boefjes.job_models import BoefjeMeta -def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: +def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: raise RuntimeError("dummy error") diff --git a/boefjes/tests/modules/dummy_normalizer/normalize.py b/boefjes/tests/modules/dummy_normalizer/normalize.py index 56aba4cfb85..fd7b1ff7365 100644 --- a/boefjes/tests/modules/dummy_normalizer/normalize.py +++ b/boefjes/tests/modules/dummy_normalizer/normalize.py @@ -1,11 +1,11 @@ -from typing import Iterable, Union +from collections.abc import Iterable from boefjes.job_models import NormalizerMeta from octopoes.models import OOI from octopoes.models.ooi.network import Network -def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterable[OOI]: +def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: network = Network(name=raw.decode()) yield network diff --git a/boefjes/tests/test_manual.py b/boefjes/tests/test_manual.py index 9b46a75f244..73a05a2c929 100644 --- a/boefjes/tests/test_manual.py +++ b/boefjes/tests/test_manual.py @@ -1,6 +1,5 @@ from ipaddress import IPv4Address, IPv6Address from pathlib import Path -from typing import Tuple from unittest import TestCase from pydantic_core import Url @@ -155,7 +154,7 @@ def test_parse_url_csv(self): output.declarations[1].ooi.dict(), ) - def check_network_created(self, csv_idx: int) -> Tuple[NormalizerMeta, NormalizerOutput, LocalNormalizerJobRunner]: + def check_network_created(self, csv_idx: int) -> tuple[NormalizerMeta, NormalizerOutput, LocalNormalizerJobRunner]: meta = NormalizerMeta.model_validate_json(get_dummy_data("manual-csv.json")) local_repository = LocalPluginRepository(Path(__file__).parent.parent / "boefjes" / "plugins") runner = LocalNormalizerJobRunner(local_repository) diff --git a/boefjes/tests/test_tasks.py b/boefjes/tests/test_tasks.py index 4091e614ad5..0f0e936538d 100644 --- a/boefjes/tests/test_tasks.py +++ b/boefjes/tests/test_tasks.py @@ -3,7 +3,6 @@ import sys from datetime import datetime, timezone from pathlib import Path -from typing import List from unittest import TestCase, mock from uuid import UUID @@ -81,7 +80,7 @@ def setUp(self) -> None: parameters=[], ), ] - self.plugins: List[PluginType] = self.boefjes + self.normalizers + self.bits + self.plugins: list[PluginType] = self.boefjes + self.normalizers + self.bits sys.path.append(str(Path(__file__).parent)) def _get_boefje_meta(self): @@ -203,6 +202,6 @@ def test_correct_local_runner_hash(self) -> None: assert Path(path / "__pycache__/pytest__init__.cpython-311.pyc").is_file() assert Path(path / "__pycache__/pytest_main.cpython-311.pyc").is_file() - assert boefje_resource_1.runnable_hash == "b07a0ecbb24e49843188a24e5298b9d614535c0ec1761e76366b6d8747515e7a" - assert boefje_resource_2.runnable_hash == "1d97b303499cc7ea79c4bb419a79bd5eea750c6430ddd759b7af22383e873a7e" - assert boefje_resource_3.runnable_hash == "67f956d89b2e2c5948f2090ac52eb752e2e65393df207180d8c24a6dea13b555" + assert boefje_resource_1.runnable_hash == "05b87bc4a93bdcf8c4a931278f90c413e5f2fa47c23b28fdf28b5304f8a82374" + assert boefje_resource_2.runnable_hash == "e0c46fb915778b06f69cd5934b2157733cef84d67fc89c563c5bbd965ad52949" + assert boefje_resource_3.runnable_hash == "0185c90d3d1a4dc1490ec918374f84e8a480101f98db14d434638147dd82c626" diff --git a/bytes/bytes/api/metrics.py b/bytes/bytes/api/metrics.py index 9fe6d44a195..48f937b4719 100644 --- a/bytes/bytes/api/metrics.py +++ b/bytes/bytes/api/metrics.py @@ -1,5 +1,4 @@ import logging -from typing import Dict from cachetools import TTLCache, cached from prometheus_client import CollectorRegistry, Gauge @@ -30,7 +29,7 @@ def ignore_arguments_key(meta_repository: MetaDataRepository): @cached(cache=TTLCache(maxsize=1, ttl=get_settings().metrics_ttl_seconds), key=ignore_arguments_key) -def cached_counts_per_organization(meta_repository: MetaDataRepository) -> Dict[str, int]: +def cached_counts_per_organization(meta_repository: MetaDataRepository) -> dict[str, int]: logger.debug( "Metrics cache miss for cached_counts_per_organization, ttl set to %s seconds", get_settings().metrics_ttl_seconds, diff --git a/bytes/bytes/api/models.py b/bytes/bytes/api/models.py index 28ff71393ab..af77cb82fc6 100644 --- a/bytes/bytes/api/models.py +++ b/bytes/bytes/api/models.py @@ -1,9 +1,7 @@ -from typing import Optional - from pydantic import BaseModel class RawResponse(BaseModel): status: str message: str - id: Optional[str] = None + id: str | None = None diff --git a/bytes/bytes/api/root.py b/bytes/bytes/api/root.py index 27b7719387d..f51f6ead207 100644 --- a/bytes/bytes/api/root.py +++ b/bytes/bytes/api/root.py @@ -1,5 +1,5 @@ import logging -from typing import Any, List, Optional, Union +from typing import Any import prometheus_client from fastapi import APIRouter, Depends @@ -24,15 +24,15 @@ class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) + results: list["ServiceHealth"] = Field(default_factory=list) ServiceHealth.update_forward_refs() -def validation_exception_handler(_: Request, exc: Union[RequestValidationError, ValidationError]) -> JSONResponse: +def validation_exception_handler(_: Request, exc: RequestValidationError | ValidationError) -> JSONResponse: logger.critical(exc) return JSONResponse( { diff --git a/bytes/bytes/api/router.py b/bytes/bytes/api/router.py index d1cc243f831..d6961c91dcd 100644 --- a/bytes/bytes/api/router.py +++ b/bytes/bytes/api/router.py @@ -1,5 +1,4 @@ import logging -from typing import Dict, List, Optional from uuid import UUID from cachetools import TTLCache, cached @@ -52,16 +51,16 @@ def get_boefje_meta_by_id( return meta -@router.get("/boefje_meta", response_model=List[BoefjeMeta], tags=[BOEFJE_META_TAG]) +@router.get("/boefje_meta", response_model=list[BoefjeMeta], tags=[BOEFJE_META_TAG]) def get_boefje_meta( organization: str, - boefje_id: Optional[str] = None, - input_ooi: Optional[str] = None, + boefje_id: str | None = None, + input_ooi: str | None = None, limit: int = 1, offset: int = 0, descending: bool = True, meta_repository: MetaDataRepository = Depends(create_meta_data_repository), -) -> List[BoefjeMeta]: +) -> list[BoefjeMeta]: logger.debug( "Filtering boefje_meta on: boefje_id=%s, input_ooi=%s, limit=%s, descending=%s", boefje_id, @@ -110,16 +109,16 @@ def get_normalizer_meta_by_id( return meta_repository.get_normalizer_meta_by_id(normalizer_meta_id) -@router.get("/normalizer_meta", response_model=List[NormalizerMeta], tags=[NORMALIZER_META_TAG]) +@router.get("/normalizer_meta", response_model=list[NormalizerMeta], tags=[NORMALIZER_META_TAG]) def get_normalizer_meta( organization: str, - normalizer_id: Optional[str] = None, - raw_id: Optional[UUID] = None, + normalizer_id: str | None = None, + raw_id: UUID | None = None, limit: int = 1, offset: int = 0, descending: bool = True, meta_repository: MetaDataRepository = Depends(create_meta_data_repository), -) -> List[NormalizerMeta]: +) -> list[NormalizerMeta]: logger.debug( "Filtering normalizer_meta on: normalizer_id=%s, raw_id=%s, limit=%s, offset=%s, descending=%s", normalizer_id, @@ -148,7 +147,7 @@ def get_normalizer_meta( async def create_raw( request: Request, boefje_meta_id: UUID, - mime_types: Optional[List[str]] = Query(None), + mime_types: list[str] | None = Query(None), meta_repository: MetaDataRepository = Depends(create_meta_data_repository), event_manager: EventManager = Depends(create_event_manager), ) -> RawResponse: @@ -208,15 +207,15 @@ def get_raw_meta_by_id( return raw_meta -@router.get("/raw", response_model=List[RawDataMeta], tags=[RAW_TAG]) +@router.get("/raw", response_model=list[RawDataMeta], tags=[RAW_TAG]) def get_raw( - organization: Optional[str] = None, - boefje_meta_id: Optional[UUID] = None, - normalized: Optional[bool] = None, + organization: str | None = None, + boefje_meta_id: UUID | None = None, + normalized: bool | None = None, limit: int = 1, - mime_types: Optional[List[str]] = Query(None), + mime_types: list[str] | None = Query(None), meta_repository: MetaDataRepository = Depends(create_meta_data_repository), -) -> List[RawDataMeta]: +) -> list[RawDataMeta]: """Get a filtered list of RawDataMeta objects, which contains metadata of a RawData object without the contents""" parsed_mime_types = [] if mime_types is None else [MimeType(value=mime_type) for mime_type in mime_types] @@ -234,14 +233,14 @@ def get_raw( return meta_repository.get_raw(query_filter) -@router.get("/mime_types", response_model=Dict[str, int], tags=[RAW_TAG]) +@router.get("/mime_types", response_model=dict[str, int], tags=[RAW_TAG]) def get_raw_count_per_mime_type( - organization: Optional[str] = None, - boefje_meta_id: Optional[UUID] = None, - normalized: Optional[bool] = None, - mime_types: Optional[List[str]] = Query(None), + organization: str | None = None, + boefje_meta_id: UUID | None = None, + normalized: bool | None = None, + mime_types: list[str] | None = Query(None), meta_repository: MetaDataRepository = Depends(create_meta_data_repository), -) -> Dict[str, int]: +) -> dict[str, int]: parsed_mime_types = [] if mime_types is None else [MimeType(value=mime_type) for mime_type in mime_types] query_filter = RawDataFilter( @@ -267,7 +266,7 @@ def ignore_arguments_key(meta_repository: MetaDataRepository, query_filter: RawD cache=TTLCache(maxsize=get_settings().metrics_cache_size, ttl=get_settings().metrics_ttl_seconds), key=ignore_arguments_key, ) -def cached_counts_per_mime_type(meta_repository: MetaDataRepository, query_filter: RawDataFilter) -> Dict[str, int]: +def cached_counts_per_mime_type(meta_repository: MetaDataRepository, query_filter: RawDataFilter) -> dict[str, int]: logger.debug( "Metrics cache miss for cached_counts_per_mime_type, ttl set to %s seconds", get_settings().metrics_ttl_seconds, diff --git a/bytes/bytes/auth.py b/bytes/bytes/auth.py index 3672783c031..e98704f9328 100644 --- a/bytes/bytes/auth.py +++ b/bytes/bytes/auth.py @@ -1,6 +1,5 @@ import logging from datetime import datetime, timedelta, timezone -from typing import Tuple from fastapi import Depends, HTTPException from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm @@ -24,7 +23,7 @@ class TokenResponse(BaseModel): expires_at: str -def get_access_token(form_data: OAuth2PasswordRequestForm) -> Tuple[str, datetime]: +def get_access_token(form_data: OAuth2PasswordRequestForm) -> tuple[str, datetime]: settings = get_settings() system_username = settings.username hashed_password = pwd_context.hash(settings.password) @@ -63,7 +62,7 @@ def authenticate_token(token: str = Depends(oauth2_scheme)) -> str: def _create_access_token( form_data: OAuth2PasswordRequestForm, secret: str, access_token_expire_minutes: float -) -> Tuple[str, datetime]: +) -> tuple[str, datetime]: expire_time = _get_expire_time(access_token_expire_minutes) data = { "sub": form_data.username, diff --git a/bytes/bytes/config.py b/bytes/bytes/config.py index f40b7706ab6..44b5928a2d5 100644 --- a/bytes/bytes/config.py +++ b/bytes/bytes/config.py @@ -2,7 +2,7 @@ import os from functools import lru_cache from pathlib import Path -from typing import Any, Dict, Optional, Tuple, Type +from typing import Any from pydantic import AmqpDsn, AnyHttpUrl, DirectoryPath, Field, FilePath, PostgresDsn from pydantic_settings import BaseSettings, EnvSettingsSource, PydanticBaseSettingsSource, SettingsConfigDict @@ -32,8 +32,8 @@ class BackwardsCompatibleEnvSettings(EnvSettingsSource): "RFC3161_CERT_FILE": "BYTES_RFC3161_CERT_FILE", } - def __call__(self) -> Dict[str, Any]: - d: Dict[str, Any] = {} + def __call__(self) -> dict[str, Any]: + d: dict[str, Any] = {} env_vars = {k.lower(): v for k, v in os.environ.items()} env_prefix = self.settings_cls.model_config.get("env_prefix", "").lower() @@ -92,17 +92,17 @@ class Settings(BaseSettings): description="Hashing repository used in Bytes (IN_MEMORY is a stub)", possible_values=["IN_MEMORY", "PASTEBIN", "RFC3161"], ) - pastebin_api_dev_key: Optional[str] = Field( + pastebin_api_dev_key: str | None = Field( None, description="API key for Pastebin. Required when using PASTEBIN hashing repository." ) - rfc3161_provider: Optional[AnyHttpUrl] = Field( + rfc3161_provider: AnyHttpUrl | None = Field( None, examples=["https://freetsa.org/tsr"], description="Timestamping. " "See https://github.com/trbs/rfc3161ng for a list of public providers and their certificates. " "Required when using RFC3161 hashing repository.", ) - rfc3161_cert_file: Optional[FilePath] = Field( + rfc3161_cert_file: FilePath | None = Field( None, examples=["bytes/timestamping/certificates/freetsa.crt"], description="Path to the certificate of the RFC3161 provider. Required when using RFC3161 hashing repository. " @@ -114,12 +114,12 @@ class Settings(BaseSettings): description="Encryption middleware used in Bytes", possible_values=["IDENTITY", "NACL_SEALBOX"], ) - private_key_b64: Optional[str] = Field( + private_key_b64: str | None = Field( None, description="KATalogus NaCl Sealbox base-64 private key string. " "Required when using NACL_SEALBOX encryption middleware.", ) - public_key_b64: Optional[str] = Field( + public_key_b64: str | None = Field( None, description="KATalogus NaCl Sealbox base-64 public key string. " "Required when using NACL_SEALBOX encryption middleware.", @@ -132,7 +132,7 @@ class Settings(BaseSettings): 200, description="The amount of cache entries to keep for metrics endpoints with query parameters." ) - span_export_grpc_endpoint: Optional[AnyHttpUrl] = Field( + span_export_grpc_endpoint: AnyHttpUrl | None = Field( None, description="OpenTelemetry endpoint", validation_alias="SPAN_EXPORT_GRPC_ENDPOINT" ) @@ -141,12 +141,12 @@ class Settings(BaseSettings): @classmethod def settings_customise_sources( cls, - settings_cls: Type[BaseSettings], + settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, - ) -> Tuple[PydanticBaseSettingsSource, ...]: + ) -> tuple[PydanticBaseSettingsSource, ...]: backwards_compatible_settings = BackwardsCompatibleEnvSettings(settings_cls) return env_settings, init_settings, file_secret_settings, backwards_compatible_settings diff --git a/bytes/bytes/database/sql_meta_repository.py b/bytes/bytes/database/sql_meta_repository.py index d945ca2ae93..8a87b2b4448 100644 --- a/bytes/bytes/database/sql_meta_repository.py +++ b/bytes/bytes/database/sql_meta_repository.py @@ -1,6 +1,6 @@ import logging import uuid -from typing import Dict, Iterator, List, Optional, Type +from collections.abc import Iterator from sqlalchemy import func from sqlalchemy.exc import IntegrityError @@ -40,7 +40,7 @@ def __init__( def __enter__(self) -> None: pass - def __exit__(self, _exc_type: Type[Exception], _exc_value: str, _exc_traceback: str) -> None: + def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_traceback: str) -> None: try: self.session.commit() logger.debug("Committed session") @@ -63,7 +63,7 @@ def get_boefje_meta_by_id(self, boefje_meta_id: uuid.UUID) -> BoefjeMeta: return to_boefje_meta(boefje_meta_in_db) - def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> List[BoefjeMeta]: + def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[BoefjeMeta]: logger.debug("Querying boefje meta: %s", query_filter.json()) query = self.session.query(BoefjeMetaInDB).filter(BoefjeMetaInDB.organization == query_filter.organization) @@ -93,7 +93,7 @@ def get_normalizer_meta_by_id(self, normalizer_meta_id: uuid.UUID) -> Normalizer return to_normalizer_meta(normalizer_meta_in_db) - def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> List[NormalizerMeta]: + def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> list[NormalizerMeta]: logger.debug("Querying normalizer meta: %s", query_filter.json()) query = self.session.query(NormalizerMetaInDB) @@ -141,7 +141,7 @@ def save_raw(self, raw: RawData) -> uuid.UUID: return raw_file_in_db.id - def get_raw(self, query_filter: RawDataFilter) -> List[RawDataMeta]: + def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]: logger.debug("Querying raw data: %s", query_filter.json()) query = self.session.query(RawFileInDB) query = query_filter.apply(query) @@ -149,7 +149,7 @@ def get_raw(self, query_filter: RawDataFilter) -> List[RawDataMeta]: return [to_raw_meta(raw_file_in_db) for raw_file_in_db in query] def get_raw_by_id(self, raw_id: uuid.UUID) -> RawData: - raw_in_db: Optional[RawFileInDB] = self.session.get(RawFileInDB, str(raw_id)) + raw_in_db: RawFileInDB | None = self.session.get(RawFileInDB, str(raw_id)) if raw_in_db is None: raise ObjectNotFoundException(RawFileInDB, id=str(raw_id)) @@ -158,14 +158,14 @@ def get_raw_by_id(self, raw_id: uuid.UUID) -> RawData: return self.raw_repository.get_raw(raw_in_db.id, boefje_meta) def get_raw_meta_by_id(self, raw_id: uuid.UUID) -> RawDataMeta: - raw_in_db: Optional[RawFileInDB] = self.session.get(RawFileInDB, str(raw_id)) + raw_in_db: RawFileInDB | None = self.session.get(RawFileInDB, str(raw_id)) if raw_in_db is None: raise ObjectNotFoundException(RawFileInDB, id=str(raw_id)) return to_raw_meta(raw_in_db) - def has_raw(self, boefje_meta: BoefjeMeta, mime_types: List[MimeType]) -> bool: + def has_raw(self, boefje_meta: BoefjeMeta, mime_types: list[MimeType]) -> bool: query = self.session.query(RawFileInDB).filter(RawFileInDB.boefje_meta_id == str(boefje_meta.id)) if len(mime_types) > 0: @@ -175,7 +175,7 @@ def has_raw(self, boefje_meta: BoefjeMeta, mime_types: List[MimeType]) -> bool: return count > 0 - def get_raw_file_count_per_organization(self) -> Dict[str, int]: + def get_raw_file_count_per_organization(self) -> dict[str, int]: query = ( self.session.query(BoefjeMetaInDB.organization, func.count()) .join(RawFileInDB) @@ -184,7 +184,7 @@ def get_raw_file_count_per_organization(self) -> Dict[str, int]: return {organization_id: count for organization_id, count in query} - def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> Dict[str, int]: + def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> dict[str, int]: logger.debug("Querying count raw data per mime type: %s", query_filter.json()) query = self.session.query(func.unnest(RawFileInDB.mime_types), func.count()).group_by( func.unnest(RawFileInDB.mime_types) @@ -199,7 +199,7 @@ def _to_raw(self, raw_file_in_db: RawFileInDB) -> RawData: return to_raw_data(raw_file_in_db, data.value) - def _get_or_create_signing_provider(self, signing_provider_url: Optional[str]) -> Optional[SigningProviderInDB]: + def _get_or_create_signing_provider(self, signing_provider_url: str | None) -> SigningProviderInDB | None: if not signing_provider_url: return None @@ -235,7 +235,7 @@ def create_meta_data_repository() -> Iterator[MetaDataRepository]: class ObjectNotFoundException(Exception): - def __init__(self, cls: Type[SQL_BASE], **kwargs): # type: ignore + def __init__(self, cls: type[SQL_BASE], **kwargs): # type: ignore super().__init__(f"The object of type {cls} was not found for query parameters {kwargs}") @@ -298,7 +298,7 @@ def to_normalizer_meta(normalizer_meta_in_db: NormalizerMetaInDB) -> NormalizerM ) -def to_raw_file_in_db(raw_data: RawData, signing_provider: Optional[SigningProviderInDB]) -> RawFileInDB: +def to_raw_file_in_db(raw_data: RawData, signing_provider: SigningProviderInDB | None) -> RawFileInDB: return RawFileInDB( id=str(uuid.uuid4()), boefje_meta_id=str(raw_data.boefje_meta.id), @@ -309,7 +309,7 @@ def to_raw_file_in_db(raw_data: RawData, signing_provider: Optional[SigningProvi ) -def raw_meta_to_raw_file_in_db(raw_data_meta: RawDataMeta, signing_provider_id: Optional[int]) -> RawFileInDB: +def raw_meta_to_raw_file_in_db(raw_data_meta: RawDataMeta, signing_provider_id: int | None) -> RawFileInDB: return RawFileInDB( id=str(raw_data_meta.id), boefje_meta_id=raw_data_meta.boefje_meta.id, diff --git a/bytes/bytes/models.py b/bytes/bytes/models.py index 4a821e1150f..ce8cfcd08be 100644 --- a/bytes/bytes/models.py +++ b/bytes/bytes/models.py @@ -2,7 +2,7 @@ from datetime import datetime from enum import Enum -from typing import Any, Dict, List, NewType, Optional +from typing import Any, NewType from uuid import UUID from pydantic import AwareDatetime, BaseModel, Field @@ -47,21 +47,21 @@ class Job(BaseModel): class Boefje(BaseModel): id: str - version: Optional[str] = None + version: str | None = None class Normalizer(BaseModel): id: str - version: Optional[str] = None + version: str | None = None class BoefjeMeta(Job): boefje: Boefje - input_ooi: Optional[str] = None - arguments: Dict[str, Any] + input_ooi: str | None = None + arguments: dict[str, Any] organization: str - runnable_hash: Optional[str] = None - environment: Optional[Dict[str, str]] = None + runnable_hash: str | None = None + environment: dict[str, str] | None = None class RawDataMeta(BaseModel): @@ -69,23 +69,23 @@ class RawDataMeta(BaseModel): id: UUID boefje_meta: BoefjeMeta - mime_types: List[MimeType] = Field(default_factory=list) + mime_types: list[MimeType] = Field(default_factory=list) # These are set once the raw is saved - secure_hash: Optional[SecureHash] = None - signing_provider_url: Optional[str] = None - hash_retrieval_link: Optional[RetrievalLink] = None + secure_hash: SecureHash | None = None + signing_provider_url: str | None = None + hash_retrieval_link: RetrievalLink | None = None class RawData(BaseModel): value: bytes boefje_meta: BoefjeMeta - mime_types: List[MimeType] = Field(default_factory=list) + mime_types: list[MimeType] = Field(default_factory=list) # These are set once the raw is saved - secure_hash: Optional[SecureHash] = None - signing_provider_url: Optional[str] = None - hash_retrieval_link: Optional[RetrievalLink] = None + secure_hash: SecureHash | None = None + signing_provider_url: str | None = None + hash_retrieval_link: RetrievalLink | None = None class NormalizerMeta(Job): diff --git a/bytes/bytes/repositories/hash_repository.py b/bytes/bytes/repositories/hash_repository.py index 69c3d69cbf7..46f38b8f0d7 100644 --- a/bytes/bytes/repositories/hash_repository.py +++ b/bytes/bytes/repositories/hash_repository.py @@ -1,5 +1,3 @@ -from typing import Optional - from bytes.models import RetrievalLink, SecureHash @@ -16,7 +14,7 @@ def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: raise NotImplementedError() - def get_signing_provider_url(self) -> Optional[str]: + def get_signing_provider_url(self) -> str | None: """Get the specific signing provider url""" raise NotImplementedError() diff --git a/bytes/bytes/repositories/meta_repository.py b/bytes/bytes/repositories/meta_repository.py index 9e27acc25f4..a0ab00de6c2 100644 --- a/bytes/bytes/repositories/meta_repository.py +++ b/bytes/bytes/repositories/meta_repository.py @@ -1,4 +1,3 @@ -from typing import Dict, List, Optional, Type from uuid import UUID from pydantic import BaseModel, Field @@ -11,29 +10,29 @@ class BoefjeMetaFilter(BaseModel): organization: str - boefje_id: Optional[str] = None - input_ooi: Optional[str] = "*" + boefje_id: str | None = None + input_ooi: str | None = "*" limit: int = 1 offset: int = 0 descending: bool = True class NormalizerMetaFilter(BaseModel): - organization: Optional[str] = None - normalizer_id: Optional[str] = None - raw_id: Optional[UUID] = None + organization: str | None = None + normalizer_id: str | None = None + raw_id: UUID | None = None limit: int = 1 offset: int = 0 descending: bool = True class RawDataFilter(BaseModel): - organization: Optional[str] = None - boefje_meta_id: Optional[UUID] = None - normalized: Optional[bool] = None - mime_types: List[MimeType] = Field(default_factory=list) - limit: Optional[int] = 1 - offset: Optional[int] = 0 + organization: str | None = None + boefje_meta_id: UUID | None = None + normalized: bool | None = None + mime_types: list[MimeType] = Field(default_factory=list) + limit: int | None = 1 + offset: int | None = 0 def apply(self, query: Query) -> Query: if self.boefje_meta_id: @@ -58,7 +57,7 @@ class MetaDataRepository: def __enter__(self) -> None: pass - def __exit__(self, _exc_type: Type[Exception], _exc_value: str, _exc_traceback: str) -> None: + def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_traceback: str) -> None: pass def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: @@ -67,7 +66,7 @@ def save_boefje_meta(self, boefje_meta: BoefjeMeta) -> None: def get_boefje_meta_by_id(self, boefje_meta_id: UUID) -> BoefjeMeta: raise NotImplementedError() - def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> List[BoefjeMeta]: + def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[BoefjeMeta]: raise NotImplementedError() def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: @@ -76,7 +75,7 @@ def save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: def get_normalizer_meta_by_id(self, normalizer_meta_id: UUID) -> NormalizerMeta: raise NotImplementedError() - def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> List[NormalizerMeta]: + def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> list[NormalizerMeta]: raise NotImplementedError() def save_raw(self, raw: RawData) -> UUID: @@ -85,16 +84,16 @@ def save_raw(self, raw: RawData) -> UUID: def get_raw_by_id(self, raw_id: UUID) -> RawData: raise NotImplementedError() - def get_raw(self, query_filter: RawDataFilter) -> List[RawDataMeta]: + def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]: raise NotImplementedError() - def has_raw(self, boefje_meta: BoefjeMeta, mime_types: List[MimeType]) -> bool: + def has_raw(self, boefje_meta: BoefjeMeta, mime_types: list[MimeType]) -> bool: raise NotImplementedError() - def get_raw_file_count_per_organization(self) -> Dict[str, int]: + def get_raw_file_count_per_organization(self) -> dict[str, int]: raise NotImplementedError() - def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> Dict[str, int]: + def get_raw_file_count_per_mime_type(self, query_filter: RawDataFilter) -> dict[str, int]: raise NotImplementedError() def get_raw_meta_by_id(self, raw_id: UUID) -> RawDataMeta: diff --git a/bytes/bytes/timestamping/in_memory.py b/bytes/bytes/timestamping/in_memory.py index b0c4e921e3f..3480a45a557 100644 --- a/bytes/bytes/timestamping/in_memory.py +++ b/bytes/bytes/timestamping/in_memory.py @@ -1,14 +1,13 @@ import uuid -from typing import Dict, Optional from bytes.models import RetrievalLink, SecureHash from bytes.repositories.hash_repository import HashRepository class InMemoryHashRepository(HashRepository): - def __init__(self, signing_provider_url: Optional[str] = None) -> None: + def __init__(self, signing_provider_url: str | None = None) -> None: self.signing_provider_url = signing_provider_url # Being able to set this to a string is useful for testing - self.memory: Dict[str, SecureHash] = {} + self.memory: dict[str, SecureHash] = {} def store(self, secure_hash: SecureHash) -> RetrievalLink: key = str(uuid.uuid4()) @@ -24,5 +23,5 @@ def retrieve(self, link: RetrievalLink) -> SecureHash: def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: return secure_hash == self.retrieve(link) - def get_signing_provider_url(self) -> Optional[str]: + def get_signing_provider_url(self) -> str | None: return self.signing_provider_url diff --git a/bytes/bytes/timestamping/pastebin.py b/bytes/bytes/timestamping/pastebin.py index 0cae6125d79..499c11f8b76 100644 --- a/bytes/bytes/timestamping/pastebin.py +++ b/bytes/bytes/timestamping/pastebin.py @@ -1,5 +1,3 @@ -from typing import Optional - import requests from bytes.models import RetrievalLink, SecureHash @@ -52,7 +50,7 @@ def retrieve(self, link: RetrievalLink) -> SecureHash: def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: return secure_hash == self.retrieve(link) - def get_signing_provider_url(self) -> Optional[str]: + def get_signing_provider_url(self) -> str | None: """Get the specific signing provider url""" return self.url diff --git a/bytes/bytes/timestamping/rfc3161.py b/bytes/bytes/timestamping/rfc3161.py index 0eb0914afcd..fc484c6d0c9 100644 --- a/bytes/bytes/timestamping/rfc3161.py +++ b/bytes/bytes/timestamping/rfc3161.py @@ -1,5 +1,4 @@ import base64 -from typing import Optional import rfc3161ng @@ -32,7 +31,7 @@ def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: return self.timestamper.check(time_stamp_token, data=secure_hash.encode()) # type: ignore - def get_signing_provider_url(self) -> Optional[str]: + def get_signing_provider_url(self) -> str | None: """Get the specific signing provider url""" return self.signing_provider diff --git a/bytes/tests/client.py b/bytes/tests/client.py index cce9d4d9a1a..cfc050474e5 100644 --- a/bytes/tests/client.py +++ b/bytes/tests/client.py @@ -1,6 +1,7 @@ import typing +from collections.abc import Callable from functools import wraps -from typing import Any, Callable, Dict, List, Optional, Union +from typing import Any from uuid import UUID import requests @@ -19,7 +20,7 @@ def __init__(self, base_url: str): self._base_url = base_url self.headers["User-Agent"] = f"bytes-api-client/{BYTES_API_CLIENT_VERSION}" - def request(self, method: str, url: Union[str, bytes], **kwargs) -> requests.Response: # type: ignore + def request(self, method: str, url: str | bytes, **kwargs) -> requests.Response: # type: ignore url = self._base_url + str(url) return super().request(method, url, **kwargs) @@ -50,7 +51,7 @@ def __init__(self, base_url: str, username: str, password: str): "username": username, "password": password, } - self.headers: Dict[str, str] = {} + self.headers: dict[str, str] = {} def login(self) -> None: self.headers = self._get_authentication_headers() @@ -59,7 +60,7 @@ def login(self) -> None: def _verify_response(response: requests.Response) -> None: response.raise_for_status() - def _get_authentication_headers(self) -> Dict[str, str]: + def _get_authentication_headers(self) -> dict[str, str]: return {"Authorization": f"bearer {self._get_token()}"} def _get_token(self) -> str: @@ -80,7 +81,7 @@ def get_metrics(self) -> bytes: return response.content @retry_with_login - def get_mime_type_count(self, query_filter: RawDataFilter) -> Dict[str, str]: + def get_mime_type_count(self, query_filter: RawDataFilter) -> dict[str, str]: params = query_filter.dict() params["mime_types"] = [m.value for m in query_filter.mime_types] @@ -104,7 +105,7 @@ def get_boefje_meta_by_id(self, boefje_meta_id: UUID) -> BoefjeMeta: return BoefjeMeta.parse_obj(boefje_meta_json) @retry_with_login - def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> List[BoefjeMeta]: + def get_boefje_meta(self, query_filter: BoefjeMetaFilter) -> list[BoefjeMeta]: response = self._session.get("/bytes/boefje_meta", headers=self.headers, params=query_filter.dict()) self._verify_response(response) @@ -126,7 +127,7 @@ def get_normalizer_meta_by_id(self, normalizer_meta_id: UUID) -> NormalizerMeta: return NormalizerMeta.parse_obj(normalizer_meta_json) @retry_with_login - def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> List[NormalizerMeta]: + def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> list[NormalizerMeta]: response = self._session.get("/bytes/normalizer_meta", headers=self.headers, params=query_filter.dict()) self._verify_response(response) @@ -134,7 +135,7 @@ def get_normalizer_meta(self, query_filter: NormalizerMetaFilter) -> List[Normal return [NormalizerMeta.parse_obj(normalizer_meta) for normalizer_meta in normalizer_meta_json] @retry_with_login - def save_raw(self, boefje_meta_id: UUID, raw: bytes, mime_types: Optional[List[str]] = None) -> str: + def save_raw(self, boefje_meta_id: UUID, raw: bytes, mime_types: list[str] | None = None) -> str: if not mime_types: mime_types = [] @@ -158,7 +159,7 @@ def get_raw(self, raw_id: UUID) -> bytes: return response.content @retry_with_login - def get_raws(self, query_filter: RawDataFilter) -> Dict[str, str]: + def get_raws(self, query_filter: RawDataFilter) -> dict[str, str]: params = query_filter.dict() params["mime_types"] = [m.value for m in query_filter.mime_types] diff --git a/bytes/tests/conftest.py b/bytes/tests/conftest.py index 843ec19ee8a..252cf94e9a6 100644 --- a/bytes/tests/conftest.py +++ b/bytes/tests/conftest.py @@ -1,6 +1,6 @@ import os +from collections.abc import Iterator from pathlib import Path -from typing import Iterator import alembic.config import pytest diff --git a/bytes/tests/loading.py b/bytes/tests/loading.py index e567687f25d..9b0b559cdaf 100644 --- a/bytes/tests/loading.py +++ b/bytes/tests/loading.py @@ -1,7 +1,7 @@ import datetime import json from datetime import timezone -from typing import Any, Dict, Optional +from typing import Any from uuid import UUID from bytes.config import BASE_DIR @@ -16,7 +16,7 @@ ) -def load_stub(relative_path: str) -> Dict[str, Any]: +def load_stub(relative_path: str) -> dict[str, Any]: full_path = BASE_DIR / "tests" / "stubs" / relative_path return dict(json.loads(full_path.read_text())) @@ -31,7 +31,7 @@ def load_stub_raw(relative_path: str) -> bytes: def get_boefje_meta( meta_id: UUID = UUID("d63d755b-6c23-44ab-8de6-8d144c448a71"), boefje_id: str = "kat_test.main", - input_ooi: Optional[str] = "Hostname|internet|test.org", + input_ooi: str | None = "Hostname|internet|test.org", ) -> BoefjeMeta: return BoefjeMeta( id=meta_id, diff --git a/keiko/keiko/api.py b/keiko/keiko/api.py index 0e25c76b6ff..0f8b3759bc3 100644 --- a/keiko/keiko/api.py +++ b/keiko/keiko/api.py @@ -2,7 +2,6 @@ import logging import uuid from pathlib import Path -from typing import List from fastapi import BackgroundTasks, Body, FastAPI from fastapi.staticfiles import StaticFiles @@ -44,7 +43,7 @@ def construct_api(settings: Settings) -> FastAPI: examples = get_samples(settings) @app.get("/templates") - def get_templates_() -> List[str]: + def get_templates_() -> list[str]: """Endpoint to list known templates.""" return list(get_templates(settings)) diff --git a/keiko/keiko/health.py b/keiko/keiko/health.py index b40033d1c08..c630fadccec 100644 --- a/keiko/keiko/health.py +++ b/keiko/keiko/health.py @@ -1,5 +1,5 @@ """Keiko health module.""" -from typing import Any, List, Optional +from typing import Any from pydantic import BaseModel, Field @@ -11,9 +11,9 @@ class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) + results: list["ServiceHealth"] = Field(default_factory=list) ServiceHealth.update_forward_refs() diff --git a/keiko/keiko/keiko.py b/keiko/keiko/keiko.py index 97f7f0669c3..2ab2f614297 100644 --- a/keiko/keiko/keiko.py +++ b/keiko/keiko/keiko.py @@ -7,7 +7,7 @@ import tempfile from logging import DEBUG, ERROR, getLogger from pathlib import Path -from typing import Any, Dict, Set, Tuple +from typing import Any from jinja2 import Environment, FileSystemLoader from opentelemetry import trace @@ -128,7 +128,7 @@ def generate_report( raise ex # read template and find used glossary entries - found_entries: Set[str] = set() + found_entries: set[str] = set() with Path(template.filename).open(encoding="utf-8") as template_file: for line in template_file: for word in line.split(): @@ -239,7 +239,7 @@ def log_output(level, output): # ...tempfiles are deleted automatically when leaving the context -def read_glossary(glossary: str, settings: Settings) -> Dict[str, Tuple[str, str]]: +def read_glossary(glossary: str, settings: Settings) -> dict[str, tuple[str, str]]: """Read a glossary CSV file and return a dictionary of entries.""" glossary_entries = {} glossary_file_path = settings.glossaries_folder / glossary diff --git a/keiko/keiko/settings.py b/keiko/keiko/settings.py index de90f6e06e5..6a1f0a851b5 100644 --- a/keiko/keiko/settings.py +++ b/keiko/keiko/settings.py @@ -1,5 +1,4 @@ """Keiko settings module.""" -from typing import Optional from pydantic import AnyHttpUrl, DirectoryPath, Field, FilePath from pydantic_settings import BaseSettings, SettingsConfigDict @@ -17,7 +16,7 @@ class Settings(BaseSettings): assets_folder: DirectoryPath = Field("assets", description="Folder containing the assets") reports_folder: DirectoryPath = Field("/reports", description="Output folder containing the reports") - span_export_grpc_endpoint: Optional[AnyHttpUrl] = Field( + span_export_grpc_endpoint: AnyHttpUrl | None = Field( None, description="OpenTelemetry endpoint", validation_alias="SPAN_EXPORT_GRPC_ENDPOINT" ) model_config = SettingsConfigDict(env_prefix="KEIKO_") diff --git a/keiko/keiko/templates.py b/keiko/keiko/templates.py index b759efa7ac0..748ca6c68a9 100644 --- a/keiko/keiko/templates.py +++ b/keiko/keiko/templates.py @@ -7,7 +7,7 @@ import os from logging import getLogger from pathlib import Path -from typing import Any, Dict, Set, cast +from typing import Any, cast from pydantic import BaseModel @@ -19,7 +19,7 @@ logger = getLogger(__name__) -def get_templates(settings: Settings) -> Set[str]: +def get_templates(settings: Settings) -> set[str]: """Assembles all template definitions found in the templates directory.""" templates = set() @@ -59,7 +59,7 @@ def get_data_shape(template: str, settings: Settings) -> BaseModel: return cast(BaseModel, getattr(module, DATA_STRUCTURE_CLASS_NAME)) -def get_samples(settings: Settings) -> Dict[str, Dict[str, Any]]: +def get_samples(settings: Settings) -> dict[str, dict[str, Any]]: """Returns a dictionary of sample data for each template""" samples = {} template_folder = Path(settings.templates_folder) diff --git a/keiko/templates/bevindingenrapport/model.py b/keiko/templates/bevindingenrapport/model.py index a8cb31fe3a3..2e5518d2d8b 100644 --- a/keiko/templates/bevindingenrapport/model.py +++ b/keiko/templates/bevindingenrapport/model.py @@ -2,7 +2,6 @@ DNS Report Datamodel """ from datetime import datetime -from typing import Dict, List, Optional from pydantic import BaseModel, ConfigDict, Field @@ -10,55 +9,55 @@ class OOI(BaseModel): - id: Optional[str] = None - ooi_type: Optional[str] = None - human_readable: Optional[str] = None - object_type: Optional[str] = None + id: str | None = None + ooi_type: str | None = None + human_readable: str | None = None + object_type: str | None = None class Finding(OOI): - proof: Optional[str] = None - description: Optional[str] = None - reproduce: Optional[str] = None + proof: str | None = None + description: str | None = None + reproduce: str | None = None ooi: str class FindingType(OOI): ooi_type: str - risk: Optional[str] = None - recommendation: Optional[str] = None + risk: str | None = None + recommendation: str | None = None - cvss: Optional[str] = None - source: Optional[str] = None - information_updated: Optional[str] = Field(None, alias="information updated") + cvss: str | None = None + source: str | None = None + information_updated: str | None = Field(None, alias="information updated") - risk_score: Optional[float] = None + risk_score: float | None = None risk_severity: str = "pending" - Information: Optional[str] = None - description: Optional[str] = None + Information: str | None = None + description: str | None = None model_config = ConfigDict(coerce_numbers_to_str=True) class FindingOccurrence(BaseModel): finding_type: FindingType - list: List[Finding] + list: list[Finding] class Meta(BaseModel): total: int - total_by_severity: Dict[str, int] - total_by_finding_type: Dict[str, int] + total_by_severity: dict[str, int] + total_by_finding_type: dict[str, int] total_finding_types: int - total_by_severity_per_finding_type: Dict[str, int] + total_by_severity_per_finding_type: dict[str, int] class DataShape(DataShapeBase): meta: Meta - findings_grouped: Dict[str, FindingOccurrence] + findings_grouped: dict[str, FindingOccurrence] valid_time: datetime report_source_type: str report_source_value: str filters: dict - report_url: Optional[str] = None + report_url: str | None = None diff --git a/keiko/templates/dns/model.py b/keiko/templates/dns/model.py index 3d3fadfafc2..27de4f7d54c 100644 --- a/keiko/templates/dns/model.py +++ b/keiko/templates/dns/model.py @@ -1,7 +1,6 @@ """ DNS Report Datamodel """ -from typing import List from pydantic import BaseModel @@ -21,8 +20,8 @@ class Hostname(BaseModel): primary_key: str name: str network: str - dns_records: List[DNSRecord] + dns_records: list[DNSRecord] class DataShape(DataShapeBase): - hostnames: List[Hostname] + hostnames: list[Hostname] diff --git a/keiko/tests/fixtures/templates/template1/model.py b/keiko/tests/fixtures/templates/template1/model.py index baf6266442b..6d6aa9b487f 100644 --- a/keiko/tests/fixtures/templates/template1/model.py +++ b/keiko/tests/fixtures/templates/template1/model.py @@ -1,7 +1,6 @@ """ Template1 Datamodel """ -from typing import List from pydantic import BaseModel @@ -20,4 +19,4 @@ class Model(BaseModel): class DataShape(DataShapeBase): - models: List[Model] + models: list[Model] diff --git a/mula/scheduler/app.py b/mula/scheduler/app.py index 83c49aa029a..34337bcac58 100644 --- a/mula/scheduler/app.py +++ b/mula/scheduler/app.py @@ -1,6 +1,5 @@ import os import threading -from typing import Dict, Optional, Set, Union import structlog from opentelemetry import trace @@ -58,10 +57,10 @@ def __init__(self, ctx: context.AppContext) -> None: self.stop_event: threading.Event = threading.Event() self.lock: threading.Lock = threading.Lock() - self.schedulers: Dict[ - str, Union[schedulers.Scheduler, schedulers.BoefjeScheduler, schedulers.NormalizerScheduler] + self.schedulers: dict[ + str, schedulers.Scheduler | schedulers.BoefjeScheduler | schedulers.NormalizerScheduler ] = {} - self.server: Optional[server.Server] = None + self.server: server.Server | None = None @tracer.start_as_current_span("monitor_organisations") def monitor_organisations(self) -> None: @@ -74,10 +73,10 @@ def monitor_organisations(self) -> None: # by the schedulers, and the organisation id's that are in the # Katalogus service. We will add/remove schedulers based on the # difference between these two sets. - scheduler_orgs: Set[str] = { + scheduler_orgs: set[str] = { s.organisation.id for s in current_schedulers.values() if hasattr(s, "organisation") } - katalogus_orgs: Set[str] = {org.id for org in self.ctx.services.katalogus.get_organisations()} + katalogus_orgs: set[str] = {org.id for org in self.ctx.services.katalogus.get_organisations()} additions = katalogus_orgs.difference(scheduler_orgs) self.logger.debug("Organisations to add: %s", len(additions), additions=sorted(additions)) @@ -87,7 +86,7 @@ def monitor_organisations(self) -> None: # We need to get scheduler ids of the schedulers that are associated # with the removed organisations - removal_scheduler_ids: Set[str] = { + removal_scheduler_ids: set[str] = { s.scheduler_id for s in current_schedulers.values() if hasattr(s, "organisation") and s.organisation.id in removals diff --git a/mula/scheduler/config/settings.py b/mula/scheduler/config/settings.py index 6be5954a2a6..91c582639d1 100644 --- a/mula/scheduler/config/settings.py +++ b/mula/scheduler/config/settings.py @@ -1,7 +1,7 @@ import logging import os from pathlib import Path -from typing import Any, Dict, Optional, Tuple, Type +from typing import Any from pydantic import AmqpDsn, AnyHttpUrl, Field, PostgresDsn, fields from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict @@ -19,11 +19,11 @@ class BackwardsCompatibleEnvSettings(PydanticBaseSettingsSource): "SCHEDULER_DB_DSN": "SCHEDULER_DB_URI", } - def get_field_value(self, field: fields.FieldInfo, field_name: str) -> Tuple[Any, str, bool]: + def get_field_value(self, field: fields.FieldInfo, field_name: str) -> tuple[Any, str, bool]: return super().get_field_value(field, field_name) - def __call__(self) -> Dict[str, Any]: - d: Dict[str, Any] = {} + def __call__(self) -> dict[str, Any]: + d: dict[str, Any] = {} env_vars = {k.lower(): v for k, v in os.environ.items()} env_prefix = self.settings_cls.model_config.get("env_prefix").lower() @@ -183,7 +183,7 @@ class Settings(BaseSettings): description="KAT queue URI for host raw data", ) - host_metrics: Optional[AnyHttpUrl] = Field( + host_metrics: AnyHttpUrl | None = Field( None, alias="SPAN_EXPORT_GRPC_ENDPOINT", description="OpenTelemetry endpoint", @@ -218,12 +218,12 @@ class Settings(BaseSettings): @classmethod def settings_customise_sources( cls, - settings_cls: Type[BaseSettings], + settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, - ) -> Tuple[PydanticBaseSettingsSource, ...]: + ) -> tuple[PydanticBaseSettingsSource, ...]: return ( init_settings, env_settings, diff --git a/mula/scheduler/connectors/connector.py b/mula/scheduler/connectors/connector.py index 149bf0f6394..332256c70fe 100644 --- a/mula/scheduler/connectors/connector.py +++ b/mula/scheduler/connectors/connector.py @@ -1,6 +1,6 @@ import socket import time -from typing import Callable +from collections.abc import Callable import requests import structlog diff --git a/mula/scheduler/connectors/listeners/listeners.py b/mula/scheduler/connectors/listeners/listeners.py index 3677d33d851..6bdba2aaa75 100644 --- a/mula/scheduler/connectors/listeners/listeners.py +++ b/mula/scheduler/connectors/listeners/listeners.py @@ -1,7 +1,7 @@ import functools import socket +from collections.abc import Callable from concurrent import futures -from typing import Callable, Optional import pika import structlog @@ -20,7 +20,7 @@ class Listener(Connector): The logger for the class. """ - name: Optional[str] = None + name: str | None = None def __init__(self) -> None: super().__init__() @@ -92,8 +92,8 @@ def __init__(self, dsn: str, queue: str, func: Callable, durable: bool = True, p self.func: Callable = func self.executor: futures.ThreadPoolExecutor = futures.ThreadPoolExecutor(max_workers=10) - self.connection: Optional[pika.BlockingConnection] = None - self.channel: Optional[pika.BlockingConnection.channel] = None + self.connection: pika.BlockingConnection | None = None + self.channel: pika.BlockingConnection.channel | None = None self.connect(self.queue, self.durable, self.prefetch_count) def listen(self) -> None: diff --git a/mula/scheduler/connectors/services/bytes.py b/mula/scheduler/connectors/services/bytes.py index 2a72b6f37e8..2a4bc45ba37 100644 --- a/mula/scheduler/connectors/services/bytes.py +++ b/mula/scheduler/connectors/services/bytes.py @@ -1,7 +1,8 @@ import threading import typing +from collections.abc import Callable from functools import wraps -from typing import Any, Callable, Dict, Optional +from typing import Any import requests from requests.models import HTTPError @@ -44,7 +45,7 @@ def __init__(self, host: str, source: str, user: str, password: str, timeout: in password: A string representing the password. timeout: An integer representing the timeout. """ - self.credentials: Dict[str, str] = { + self.credentials: dict[str, str] = { "username": user, "password": password, } @@ -74,7 +75,7 @@ def get_token(self) -> str: @retry_with_login @exception_handler - def get_last_run_boefje(self, boefje_id: str, input_ooi: str, organization_id: str) -> Optional[BoefjeMeta]: + def get_last_run_boefje(self, boefje_id: str, input_ooi: str, organization_id: str) -> BoefjeMeta | None: url = f"{self.host}/bytes/boefje_meta" response = self.get( url=url, @@ -96,7 +97,7 @@ def get_last_run_boefje(self, boefje_id: str, input_ooi: str, organization_id: s @retry_with_login @exception_handler - def get_last_run_boefje_by_organisation_id(self, organization_id: str) -> Optional[BoefjeMeta]: + def get_last_run_boefje_by_organisation_id(self, organization_id: str) -> BoefjeMeta | None: url = f"{self.host}/bytes/boefje_meta" response = self.get( url=url, diff --git a/mula/scheduler/connectors/services/katalogus.py b/mula/scheduler/connectors/services/katalogus.py index 832acb3fac2..7f9062bdd61 100644 --- a/mula/scheduler/connectors/services/katalogus.py +++ b/mula/scheduler/connectors/services/katalogus.py @@ -1,5 +1,4 @@ import threading -from typing import Dict, List from scheduler.connectors.errors import exception_handler from scheduler.models import Boefje, Organisation, Plugin @@ -34,7 +33,7 @@ def __init__(self, host: str, source: str, timeout: int, pool_connections: int, # For every organisation we cache which new boefjes for an organisation # have been enabled. - self.organisations_new_boefjes_cache: Dict = {} + self.organisations_new_boefjes_cache: dict = {} # Initialise the cache. self.flush_caches() @@ -126,7 +125,7 @@ def flush_organisations_normalizer_type_cache(self) -> None: self.logger.debug("Flushed the katalogus normalizer type cache for organisations") @exception_handler - def get_boefjes(self) -> List[Boefje]: + def get_boefjes(self) -> list[Boefje]: url = f"{self.host}/boefjes" response = self.get(url) return [Boefje(**boefje) for boefje in response.json()] @@ -144,17 +143,17 @@ def get_organisation(self, organisation_id) -> Organisation: return Organisation(**response.json()) @exception_handler - def get_organisations(self) -> List[Organisation]: + def get_organisations(self) -> list[Organisation]: url = f"{self.host}/v1/organisations" response = self.get(url) return [Organisation(**organisation) for organisation in response.json().values()] - def get_plugins_by_organisation(self, organisation_id: str) -> List[Plugin]: + def get_plugins_by_organisation(self, organisation_id: str) -> list[Plugin]: url = f"{self.host}/v1/organisations/{organisation_id}/plugins" response = self.get(url) return [Plugin(**plugin) for plugin in response.json()] - def get_plugins_by_org_id(self, organisation_id: str) -> List[Plugin]: + def get_plugins_by_org_id(self, organisation_id: str) -> list[Plugin]: try: with self.lock: return dict_utils.deep_get(self.organisations_plugin_cache, [organisation_id]) @@ -170,7 +169,7 @@ def get_plugin_by_id_and_org_id(self, plugin_id: str, organisation_id: str) -> P self.flush_organisations_plugin_cache() return dict_utils.deep_get(self.organisations_plugin_cache, [organisation_id, plugin_id]) - def get_boefjes_by_type_and_org_id(self, boefje_type: str, organisation_id: str) -> List[Plugin]: + def get_boefjes_by_type_and_org_id(self, boefje_type: str, organisation_id: str) -> list[Plugin]: try: with self.lock: return dict_utils.deep_get(self.organisations_boefje_type_cache, [organisation_id, boefje_type]) @@ -178,7 +177,7 @@ def get_boefjes_by_type_and_org_id(self, boefje_type: str, organisation_id: str) self.flush_organisations_boefje_type_cache() return dict_utils.deep_get(self.organisations_boefje_type_cache, [organisation_id, boefje_type]) - def get_normalizers_by_org_id_and_type(self, organisation_id: str, normalizer_type: str) -> List[Plugin]: + def get_normalizers_by_org_id_and_type(self, organisation_id: str, normalizer_type: str) -> list[Plugin]: try: with self.lock: return dict_utils.deep_get(self.organisations_normalizer_type_cache, [organisation_id, normalizer_type]) @@ -186,7 +185,7 @@ def get_normalizers_by_org_id_and_type(self, organisation_id: str, normalizer_ty self.flush_organisations_normalizer_type_cache() return dict_utils.deep_get(self.organisations_normalizer_type_cache, [organisation_id, normalizer_type]) - def get_new_boefjes_by_org_id(self, organisation_id: str) -> List[Plugin]: + def get_new_boefjes_by_org_id(self, organisation_id: str) -> list[Plugin]: # Get the enabled boefjes for the organisation from katalogus plugins = self.get_plugins_by_organisation(organisation_id) enabled_boefjes = { diff --git a/mula/scheduler/connectors/services/octopoes.py b/mula/scheduler/connectors/services/octopoes.py index 08658c7a9c5..d2ae17cb117 100644 --- a/mula/scheduler/connectors/services/octopoes.py +++ b/mula/scheduler/connectors/services/octopoes.py @@ -1,5 +1,3 @@ -from typing import List - from scheduler.connectors.errors import exception_handler from scheduler.models import OOI, Organisation @@ -16,17 +14,17 @@ def __init__( self, host: str, source: str, - orgs: List[Organisation], + orgs: list[Organisation], pool_connections: int, timeout: int = 10, ): - self.orgs: List[Organisation] = orgs + self.orgs: list[Organisation] = orgs super().__init__(host, source, timeout, pool_connections) @exception_handler def get_objects_by_object_types( - self, organisation_id: str, object_types: List[str], scan_level: List[int] - ) -> List[OOI]: + self, organisation_id: str, object_types: list[str], scan_level: list[int] + ) -> list[OOI]: """Get all oois from octopoes""" if scan_level is None: scan_level = [] @@ -58,7 +56,7 @@ def get_objects_by_object_types( return oois @exception_handler - def get_random_objects(self, organisation_id: str, n: int, scan_level: List[int]) -> List[OOI]: + def get_random_objects(self, organisation_id: str, n: int, scan_level: list[int]) -> list[OOI]: """Get `n` random oois from octopoes""" if scan_level is None: scan_level = [] diff --git a/mula/scheduler/connectors/services/services.py b/mula/scheduler/connectors/services/services.py index 0d8f200a499..2af9b507273 100644 --- a/mula/scheduler/connectors/services/services.py +++ b/mula/scheduler/connectors/services/services.py @@ -1,5 +1,6 @@ import urllib.parse -from typing import Any, Dict, MutableMapping, Optional, Union +from collections.abc import MutableMapping +from typing import Any import requests import structlog @@ -35,8 +36,8 @@ class HTTPService(Connector): An integer defining the timeout of requests. """ - name: Optional[str] = None - health_endpoint: Optional[str] = "health" + name: str | None = None + health_endpoint: str | None = "health" def __init__( self, @@ -93,8 +94,8 @@ def __init__( def get( self, url: str, - payload: Optional[Dict[str, Any]] = None, - params: Optional[Dict[str, Any]] = None, + payload: dict[str, Any] | None = None, + params: dict[str, Any] | None = None, ) -> requests.Response: """Execute a HTTP GET request @@ -126,8 +127,8 @@ def get( def post( self, url: str, - payload: Dict[str, Any], - params: Optional[Dict[str, Any]] = None, + payload: dict[str, Any], + params: dict[str, Any] | None = None, ) -> requests.Response: """Execute a HTTP POST request @@ -160,7 +161,7 @@ def post( return response @property - def headers(self) -> MutableMapping[str, Union[str, bytes]]: + def headers(self) -> MutableMapping[str, str | bytes]: return self.session.headers def _do_checks(self) -> None: diff --git a/mula/scheduler/models/boefje.py b/mula/scheduler/models/boefje.py index 5009812325d..0d3b6932294 100644 --- a/mula/scheduler/models/boefje.py +++ b/mula/scheduler/models/boefje.py @@ -1,6 +1,6 @@ import datetime import uuid -from typing import Any, Dict, Optional +from typing import Any from pydantic import BaseModel, Field @@ -9,8 +9,8 @@ class Boefje(BaseModel): """Boefje representation.""" id: str - name: Optional[str] = Field(default=None) - version: Optional[str] = Field(default=None) + name: str | None = Field(default=None) + version: str | None = Field(default=None) class BoefjeMeta(BaseModel): @@ -18,9 +18,9 @@ class BoefjeMeta(BaseModel): id: uuid.UUID boefje: Boefje - input_ooi: Optional[str] - arguments: Dict[str, Any] = Field(default_factory=dict) + input_ooi: str | None + arguments: dict[str, Any] = Field(default_factory=dict) organization: str - started_at: Optional[datetime.datetime] - ended_at: Optional[datetime.datetime] + started_at: datetime.datetime | None + ended_at: datetime.datetime | None diff --git a/mula/scheduler/models/health.py b/mula/scheduler/models/health.py index 9741260b77d..2d2f7246c34 100644 --- a/mula/scheduler/models/health.py +++ b/mula/scheduler/models/health.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Optional +from typing import Any from pydantic import BaseModel, Field @@ -10,10 +10,10 @@ class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) - externals: Dict[str, bool] = {} + results: list["ServiceHealth"] = Field(default_factory=list) + externals: dict[str, bool] = {} ServiceHealth.model_rebuild() diff --git a/mula/scheduler/models/normalizer.py b/mula/scheduler/models/normalizer.py index 044bf23d73d..039e9971353 100644 --- a/mula/scheduler/models/normalizer.py +++ b/mula/scheduler/models/normalizer.py @@ -1,6 +1,5 @@ import datetime import uuid -from typing import Optional from pydantic import BaseModel @@ -9,8 +8,8 @@ class Normalizer(BaseModel): """Normalizer representation.""" id: str - name: Optional[str] = None - version: Optional[str] = None + name: str | None = None + version: str | None = None class NormalizerMeta(BaseModel): @@ -18,6 +17,6 @@ class NormalizerMeta(BaseModel): id: uuid.UUID normalizer: Normalizer - raw_file_id: Optional[str] + raw_file_id: str | None started_at: datetime.datetime ended_at: datetime.datetime diff --git a/mula/scheduler/models/ooi.py b/mula/scheduler/models/ooi.py index 96b8a10258c..e1bf51c4c7f 100644 --- a/mula/scheduler/models/ooi.py +++ b/mula/scheduler/models/ooi.py @@ -1,5 +1,4 @@ from enum import Enum -from typing import Optional from pydantic import BaseModel @@ -13,7 +12,7 @@ class MutationOperationType(Enum): class ScanProfile(BaseModel): level: int reference: str - scan_profile_type: Optional[str] + scan_profile_type: str | None class OOI(BaseModel): @@ -27,4 +26,4 @@ class OOI(BaseModel): class ScanProfileMutation(BaseModel): operation: MutationOperationType primary_key: str - value: Optional[OOI] + value: OOI | None diff --git a/mula/scheduler/models/plugin.py b/mula/scheduler/models/plugin.py index ce7f9322a84..f51c4952972 100644 --- a/mula/scheduler/models/plugin.py +++ b/mula/scheduler/models/plugin.py @@ -1,5 +1,4 @@ import datetime -from typing import List, Optional, Union from pydantic import BaseModel @@ -8,14 +7,14 @@ class Plugin(BaseModel): id: str type: str enabled: bool - name: Optional[str] = None - version: Optional[str] = None - authors: Optional[List[str]] = None - created: Optional[datetime.datetime] = None - description: Optional[str] = None - environment_keys: Optional[List[str]] = None - related: Optional[List[str]] = None - scan_level: Optional[int] = None - consumes: Union[str, List[str]] - options: Optional[List[str]] = None - produces: List[str] + name: str | None = None + version: str | None = None + authors: list[str] | None = None + created: datetime.datetime | None = None + description: str | None = None + environment_keys: list[str] | None = None + related: list[str] | None = None + scan_level: int | None = None + consumes: str | list[str] + options: list[str] | None = None + produces: list[str] diff --git a/mula/scheduler/models/queue.py b/mula/scheduler/models/queue.py index faea331bfe2..d71df6e455e 100644 --- a/mula/scheduler/models/queue.py +++ b/mula/scheduler/models/queue.py @@ -1,6 +1,5 @@ import uuid from datetime import datetime, timezone -from typing import Dict, List, Optional from pydantic import BaseModel, ConfigDict, Field from sqlalchemy import Column, DateTime, Integer, String @@ -22,14 +21,14 @@ class PrioritizedItem(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) - scheduler_id: Optional[str] = None + scheduler_id: str | None = None # A unique generated identifier for the object contained in data - hash: Optional[str] = Field(None, max_length=32) + hash: str | None = Field(None, max_length=32) - priority: Optional[int] = 0 + priority: int | None = 0 - data: Dict = Field(default_factory=dict) + data: dict = Field(default_factory=dict) created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc)) @@ -71,4 +70,4 @@ class Queue(BaseModel): allow_replace: bool allow_updates: bool allow_priority_updates: bool - pq: Optional[List[PrioritizedItem]] = None + pq: list[PrioritizedItem] | None = None diff --git a/mula/scheduler/models/raw_data.py b/mula/scheduler/models/raw_data.py index 18d68e93f01..e498d84e46e 100644 --- a/mula/scheduler/models/raw_data.py +++ b/mula/scheduler/models/raw_data.py @@ -1,5 +1,4 @@ import uuid -from typing import Dict, List, Optional from pydantic import BaseModel @@ -9,6 +8,6 @@ class RawData(BaseModel): id: uuid.UUID boefje_meta: BoefjeMeta - mime_types: List[Dict[str, str]] - secure_hash: Optional[str] - hash_retrieval_link: Optional[str] + mime_types: list[dict[str, str]] + secure_hash: str | None + hash_retrieval_link: str | None diff --git a/mula/scheduler/models/request.py b/mula/scheduler/models/request.py index 3c87a24e85d..327439daa21 100644 --- a/mula/scheduler/models/request.py +++ b/mula/scheduler/models/request.py @@ -1,5 +1,3 @@ -from typing import Dict - from pydantic import BaseModel, Field @@ -7,4 +5,4 @@ class PrioritizedItemRequest(BaseModel): """Request model for prioritized items used in the server.""" priority: int - data: Dict = Field(default_factory=dict) + data: dict = Field(default_factory=dict) diff --git a/mula/scheduler/models/scheduler.py b/mula/scheduler/models/scheduler.py index 1b47c564fb7..9c75c923743 100644 --- a/mula/scheduler/models/scheduler.py +++ b/mula/scheduler/models/scheduler.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import Any, Dict, Optional +from typing import Any from pydantic import BaseModel @@ -8,7 +8,7 @@ class Scheduler(BaseModel): """Representation of a schedulers.Scheduler instance. Used for unmarshalling of schedulers to a JSON representation.""" - id: Optional[str] = None - enabled: Optional[bool] = None - priority_queue: Optional[Dict[str, Any]] = None - last_activity: Optional[datetime] = None + id: str | None = None + enabled: bool | None = None + priority_queue: dict[str, Any] | None = None + last_activity: datetime | None = None diff --git a/mula/scheduler/models/tasks.py b/mula/scheduler/models/tasks.py index 6e12e0c8cb2..52c229ecd39 100644 --- a/mula/scheduler/models/tasks.py +++ b/mula/scheduler/models/tasks.py @@ -1,7 +1,7 @@ import enum import uuid from datetime import datetime, timezone -from typing import ClassVar, List, Optional +from typing import ClassVar import mmh3 from pydantic import BaseModel, ConfigDict, Field @@ -109,7 +109,7 @@ class NormalizerTask(BaseModel): type: ClassVar[str] = "normalizer" - id: Optional[uuid.UUID] = Field(default_factory=uuid.uuid4) + id: uuid.UUID | None = Field(default_factory=uuid.uuid4) normalizer: Normalizer raw_data: RawData @@ -128,12 +128,12 @@ class BoefjeTask(BaseModel): type: ClassVar[str] = "boefje" - id: Optional[uuid.UUID] = Field(default_factory=uuid.uuid4) + id: uuid.UUID | None = Field(default_factory=uuid.uuid4) boefje: Boefje - input_ooi: Optional[str] + input_ooi: str | None organization: str - dispatches: List[Normalizer] = Field(default_factory=list) + dispatches: list[Normalizer] = Field(default_factory=list) @property def hash(self) -> str: diff --git a/mula/scheduler/queues/pq.py b/mula/scheduler/queues/pq.py index 02f1cc3f17a..5fb525edf42 100644 --- a/mula/scheduler/queues/pq.py +++ b/mula/scheduler/queues/pq.py @@ -3,7 +3,7 @@ import abc import functools import threading -from typing import Any, Dict, Optional +from typing import Any import pydantic import structlog @@ -100,7 +100,7 @@ def __init__( self.pq_store: storage.PriorityQueueStore = pq_store self.lock: threading.Lock = threading.Lock() - def pop(self, filters: Optional[storage.filters.FilterRequest] = None) -> Optional[models.PrioritizedItem]: + def pop(self, filters: storage.filters.FilterRequest | None = None) -> models.PrioritizedItem | None: """Remove and return the highest priority item from the queue. Optionally apply filters to the queue. @@ -124,7 +124,7 @@ def pop(self, filters: Optional[storage.filters.FilterRequest] = None) -> Option return item - def push(self, p_item: models.PrioritizedItem) -> Optional[models.PrioritizedItem]: + def push(self, p_item: models.PrioritizedItem) -> models.PrioritizedItem | None: """Push an item onto the queue. Args: @@ -212,7 +212,7 @@ def push(self, p_item: models.PrioritizedItem) -> Optional[models.PrioritizedIte return item_db @with_lock - def peek(self, index: int) -> Optional[models.PrioritizedItem]: + def peek(self, index: int) -> models.PrioritizedItem | None: """Return the item at index without removing it. Args: @@ -288,7 +288,7 @@ def is_item_on_queue_by_hash(self, item_hash: str) -> bool: return item is not None @with_lock - def get_p_item_by_identifier(self, p_item: models.PrioritizedItem) -> Optional[models.PrioritizedItem]: + def get_p_item_by_identifier(self, p_item: models.PrioritizedItem) -> models.PrioritizedItem | None: """Get an item from the queue by its identifier. Args: @@ -317,7 +317,7 @@ def _is_valid_item(self, item: Any) -> bool: return True - def dict(self, include_pq: bool = True) -> Dict[str, Any]: + def dict(self, include_pq: bool = True) -> dict[str, Any]: """Return a dictionary representation of the queue.""" response = { "id": self.pq_id, diff --git a/mula/scheduler/schedulers/boefje.py b/mula/scheduler/schedulers/boefje.py index 64c40fcb611..3779640e758 100644 --- a/mula/scheduler/schedulers/boefje.py +++ b/mula/scheduler/schedulers/boefje.py @@ -1,7 +1,7 @@ +from collections.abc import Callable from concurrent import futures from datetime import datetime, timedelta, timezone from types import SimpleNamespace -from typing import Callable, List, Optional import requests import structlog @@ -41,8 +41,8 @@ def __init__( ctx: context.AppContext, scheduler_id: str, organisation: Organisation, - queue: Optional[queues.PriorityQueue] = None, - callback: Optional[Callable[..., None]] = None, + queue: queues.PriorityQueue | None = None, + callback: Callable[..., None] | None = None, ): self.logger = structlog.getLogger(__name__) self.organisation: Organisation = organisation @@ -240,7 +240,7 @@ def push_tasks_for_new_boefjes(self) -> None: ) for boefje in new_boefjes: - oois_by_object_type: List[OOI] = [] + oois_by_object_type: list[OOI] = [] try: oois_by_object_type = self.ctx.services.octopoes.get_objects_by_object_types( self.organisation.id, @@ -760,7 +760,7 @@ def has_grace_period_passed(self, task: BoefjeTask) -> bool: return True - def get_boefjes_for_ooi(self, ooi) -> List[Plugin]: + def get_boefjes_for_ooi(self, ooi) -> list[Plugin]: """Get available all boefjes (enabled and disabled) for an ooi. Args: diff --git a/mula/scheduler/schedulers/normalizer.py b/mula/scheduler/schedulers/normalizer.py index 289fc08ae83..3ad220d5583 100644 --- a/mula/scheduler/schedulers/normalizer.py +++ b/mula/scheduler/schedulers/normalizer.py @@ -1,6 +1,6 @@ +from collections.abc import Callable from concurrent import futures from types import SimpleNamespace -from typing import Callable, Dict, List, Optional import requests import structlog @@ -38,8 +38,8 @@ def __init__( ctx: context.AppContext, scheduler_id: str, organisation: Organisation, - queue: Optional[queues.PriorityQueue] = None, - callback: Optional[Callable[..., None]] = None, + queue: queues.PriorityQueue | None = None, + callback: Callable[..., None] | None = None, ): self.logger = structlog.getLogger(__name__) self.organisation: Organisation = organisation @@ -131,9 +131,9 @@ def push_tasks_for_received_raw_data(self, body: bytes) -> None: return # Get all normalizers for the mime types of the raw data - normalizers: Dict[str, Normalizer] = {} + normalizers: dict[str, Normalizer] = {} for mime_type in latest_raw_data.raw_data.mime_types: - normalizers_by_mime_type: List[Plugin] = self.get_normalizers_for_mime_type(mime_type.get("value")) + normalizers_by_mime_type: list[Plugin] = self.get_normalizers_for_mime_type(mime_type.get("value")) for normalizer in normalizers_by_mime_type: normalizers[normalizer.id] = normalizer @@ -260,7 +260,7 @@ def push_task(self, normalizer: Plugin, raw_data: RawData, caller: str = "") -> caller=caller, ) - def get_normalizers_for_mime_type(self, mime_type: str) -> List[Plugin]: + def get_normalizers_for_mime_type(self, mime_type: str) -> list[Plugin]: """Get available normalizers for a given mime type. Args: diff --git a/mula/scheduler/schedulers/scheduler.py b/mula/scheduler/schedulers/scheduler.py index 71ef95b74d5..446f02c8605 100644 --- a/mula/scheduler/schedulers/scheduler.py +++ b/mula/scheduler/schedulers/scheduler.py @@ -1,8 +1,9 @@ import abc import threading import time +from collections.abc import Callable from datetime import datetime, timezone -from typing import Any, Callable, Dict, List, Optional +from typing import Any import structlog from opentelemetry import trace @@ -44,7 +45,7 @@ def __init__( ctx: context.AppContext, scheduler_id: str, queue: queues.PriorityQueue, - callback: Optional[Callable[..., None]] = None, + callback: Callable[..., None] | None = None, max_tries: int = -1, ): """Initialize the Scheduler. @@ -70,16 +71,16 @@ def __init__( self.scheduler_id: str = scheduler_id self.queue: queues.PriorityQueue = queue self.max_tries: int = max_tries - self.callback: Optional[Callable[[], Any]] = callback - self._last_activity: Optional[datetime] = None + self.callback: Callable[[], Any] | None = callback + self._last_activity: datetime | None = None # Listeners - self.listeners: Dict[str, connectors.listeners.Listener] = {} + self.listeners: dict[str, connectors.listeners.Listener] = {} # Threads self.lock: threading.Lock = threading.Lock() self.stop_event_threads: threading.Event = threading.Event() - self.threads: List[thread.ThreadRunner] = [] + self.threads: list[thread.ThreadRunner] = [] @abc.abstractmethod def run(self) -> None: @@ -143,8 +144,8 @@ def post_pop(self, p_item: models.PrioritizedItem) -> None: @tracer.start_as_current_span("scheduler_pop_item_from_queue") def pop_item_from_queue( - self, filters: Optional[storage.filters.FilterRequest] = None - ) -> Optional[models.PrioritizedItem]: + self, filters: storage.filters.FilterRequest | None = None + ) -> models.PrioritizedItem | None: """Pop an item from the queue. Args: @@ -244,7 +245,7 @@ def push_item_to_queue(self, p_item: models.PrioritizedItem) -> None: self.post_push(p_item) - def push_items_to_queue(self, p_items: List[models.PrioritizedItem]) -> None: + def push_items_to_queue(self, p_items: list[models.PrioritizedItem]) -> None: """Push multiple PrioritizedItems to the queue. Args: @@ -446,7 +447,7 @@ def stop_threads(self) -> None: self.threads = [] @property - def last_activity(self) -> Optional[datetime]: + def last_activity(self) -> datetime | None: """Get the last activity of the scheduler.""" with self.lock: return self._last_activity @@ -457,7 +458,7 @@ def last_activity(self, value: datetime) -> None: with self.lock: self._last_activity = value - def dict(self) -> Dict[str, Any]: + def dict(self) -> dict[str, Any]: """Get a dict representation of the scheduler.""" return { "id": self.scheduler_id, diff --git a/mula/scheduler/server/pagination.py b/mula/scheduler/server/pagination.py index 33e93559b54..3659c49a860 100644 --- a/mula/scheduler/server/pagination.py +++ b/mula/scheduler/server/pagination.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional +from typing import Any from fastapi import Request from pydantic import BaseModel @@ -6,26 +6,26 @@ class PaginatedResponse(BaseModel): count: int - next: Optional[str] - previous: Optional[str] - results: List[Any] + next: str | None + previous: str | None + results: list[Any] -def create_next_url(request: Request, offset: int, limit: int, count: int) -> Optional[str]: +def create_next_url(request: Request, offset: int, limit: int, count: int) -> str | None: if offset + limit <= count: return str(request.url.include_query_params(limit=limit, offset=offset + limit)) return None -def create_previous_url(request: Request, offset: int, limit: int) -> Optional[str]: +def create_previous_url(request: Request, offset: int, limit: int) -> str | None: if offset - limit >= 0: return str(request.url.include_query_params(limit=limit, offset=offset - limit)) return None -def paginate(request: Request, items: List[Any], count: int, offset: int, limit: int) -> PaginatedResponse: +def paginate(request: Request, items: list[Any], count: int, offset: int, limit: int) -> PaginatedResponse: return PaginatedResponse( count=count, next=create_next_url(request, offset, limit, count), diff --git a/mula/scheduler/server/server.py b/mula/scheduler/server/server.py index 4133b43b456..112f29f3f1e 100644 --- a/mula/scheduler/server/server.py +++ b/mula/scheduler/server/server.py @@ -1,5 +1,5 @@ import datetime -from typing import Any, Dict, List, Optional +from typing import Any import fastapi import prometheus_client @@ -35,7 +35,7 @@ class Server: def __init__( self, ctx: context.AppContext, - s: Dict[str, schedulers.Scheduler], + s: dict[str, schedulers.Scheduler], ): """Initializer of the Server class. @@ -46,7 +46,7 @@ def __init__( self.logger: structlog.BoundLogger = structlog.getLogger(__name__) self.ctx: context.AppContext = ctx - self.schedulers: Dict[str, schedulers.Scheduler] = s + self.schedulers: dict[str, schedulers.Scheduler] = s self.config: settings.Settings = settings.Settings() self.api = fastapi.FastAPI() @@ -96,7 +96,7 @@ def __init__( path="/schedulers", endpoint=self.get_schedulers, methods=["GET"], - response_model=List[models.Scheduler], + response_model=list[models.Scheduler], status_code=status.HTTP_200_OK, description="List all schedulers", ) @@ -175,7 +175,7 @@ def __init__( path="/queues", endpoint=self.get_queues, methods=["GET"], - response_model=List[models.Queue], + response_model=list[models.Queue], response_model_exclude_unset=True, status_code=status.HTTP_200_OK, description="List all queues", @@ -194,7 +194,7 @@ def __init__( path="/queues/{queue_id}/pop", endpoint=self.pop_queue, methods=["POST"], - response_model=Optional[models.PrioritizedItem], + response_model=models.PrioritizedItem | None, status_code=status.HTTP_200_OK, description="Pop an item from a queue", ) @@ -203,7 +203,7 @@ def __init__( path="/queues/{queue_id}/push", endpoint=self.push_queue, methods=["POST"], - response_model=Optional[models.PrioritizedItem], + response_model=models.PrioritizedItem | None, status_code=status.HTTP_201_CREATED, description="Push an item to a queue", ) @@ -282,16 +282,16 @@ def patch_scheduler(self, scheduler_id: str, item: models.Scheduler) -> Any: def list_tasks( self, request: fastapi.Request, - scheduler_id: Optional[str] = None, - task_type: Optional[str] = None, - status: Optional[str] = None, + scheduler_id: str | None = None, + task_type: str | None = None, + status: str | None = None, offset: int = 0, limit: int = 10, - min_created_at: Optional[datetime.datetime] = None, - max_created_at: Optional[datetime.datetime] = None, - input_ooi: Optional[str] = None, # FIXME: deprecated - plugin_id: Optional[str] = None, # FIXME: deprecated - filters: Optional[storage.filters.FilterRequest] = None, + min_created_at: datetime.datetime | None = None, + max_created_at: datetime.datetime | None = None, + input_ooi: str | None = None, # FIXME: deprecated + plugin_id: str | None = None, # FIXME: deprecated + filters: storage.filters.FilterRequest | None = None, ) -> Any: if (min_created_at is not None and max_created_at is not None) and min_created_at > max_created_at: raise fastapi.HTTPException( @@ -437,7 +437,7 @@ def get_task(self, task_id: str) -> Any: return models.Task(**task.model_dump()) - def patch_task(self, task_id: str, item: Dict) -> Any: + def patch_task(self, task_id: str, item: dict) -> Any: if len(item) == 0: raise fastapi.HTTPException( status_code=status.HTTP_400_BAD_REQUEST, @@ -472,7 +472,7 @@ def patch_task(self, task_id: str, item: Dict) -> Any: return updated_task - def get_task_stats(self, scheduler_id: Optional[str] = None) -> Optional[Dict[str, Dict[str, int]]]: + def get_task_stats(self, scheduler_id: str | None = None) -> dict[str, dict[str, int]] | None: try: stats = self.ctx.datastores.task_store.get_status_count_per_hour(scheduler_id) except Exception as exc: @@ -504,7 +504,7 @@ def get_queue(self, queue_id: str) -> Any: return models.Queue(**q.dict()) - def pop_queue(self, queue_id: str, filters: Optional[storage.filters.FilterRequest] = None) -> Any: + def pop_queue(self, queue_id: str, filters: storage.filters.FilterRequest | None = None) -> Any: s = self.schedulers.get(queue_id) if s is None: raise fastapi.HTTPException( diff --git a/mula/scheduler/storage/filters/casting.py b/mula/scheduler/storage/filters/casting.py index bb38ad52bea..e3eb2c85b18 100644 --- a/mula/scheduler/storage/filters/casting.py +++ b/mula/scheduler/storage/filters/casting.py @@ -53,7 +53,7 @@ def cast_expression(expression: BinaryExpression, filter_: Filter) -> BinaryExpr expression = expression.astext # Handle other numeric types - elif isinstance(filter_.value, (int, float)): + elif isinstance(filter_.value, int | float): expression = expression.cast(Numeric) # Handle booleans diff --git a/mula/scheduler/storage/filters/comparison.py b/mula/scheduler/storage/filters/comparison.py index 6596bf2e6e4..e8fab58641d 100644 --- a/mula/scheduler/storage/filters/comparison.py +++ b/mula/scheduler/storage/filters/comparison.py @@ -1,5 +1,3 @@ -from typing import List, Union - from sqlalchemy.sql.elements import BinaryExpression @@ -60,7 +58,7 @@ def __init__(self, operator: str): def compare( self, x: BinaryExpression, - y: Union[str, int, float, bool, None, List[str], List[int], List[float], List[bool], List[None]], + y: str | int | float | bool | None | list[str] | list[int] | list[float] | list[bool] | list[None], ) -> BinaryExpression: """Compare two values using the operator specified in the constructor. diff --git a/mula/scheduler/storage/filters/filters.py b/mula/scheduler/storage/filters/filters.py index de2ada67d8a..32027731602 100644 --- a/mula/scheduler/storage/filters/filters.py +++ b/mula/scheduler/storage/filters/filters.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Literal, Optional, Union +from typing import Literal from pydantic import BaseModel @@ -14,7 +14,7 @@ class Filter(BaseModel): """ column: str - field: Optional[str] = None + field: str | None = None operator: Literal[ "==", "eq", @@ -47,7 +47,7 @@ class Filter(BaseModel): "@?", "@@", ] - value: Union[str, int, float, bool, None, List[str], List[int], List[float], List[bool], List[None]] + value: str | int | float | bool | None | list[str] | list[int] | list[float] | list[bool] | list[None] class FilterRequest(BaseModel): @@ -58,7 +58,7 @@ class FilterRequest(BaseModel): a dictionary of lists. """ - filters: Union[List["Filter"], Dict[str, List["Filter"]]] + filters: list["Filter"] | dict[str, list["Filter"]] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/mula/scheduler/storage/pq_store.py b/mula/scheduler/storage/pq_store.py index 5df8f1112e5..3cb300102f2 100644 --- a/mula/scheduler/storage/pq_store.py +++ b/mula/scheduler/storage/pq_store.py @@ -1,4 +1,3 @@ -from typing import List, Optional, Tuple from uuid import UUID from scheduler import models @@ -14,7 +13,7 @@ def __init__(self, dbconn: DBConn) -> None: self.dbconn = dbconn @retry() - def pop(self, scheduler_id: str, filters: Optional[FilterRequest] = None) -> Optional[models.PrioritizedItem]: + def pop(self, scheduler_id: str, filters: FilterRequest | None = None) -> models.PrioritizedItem | None: with self.dbconn.session.begin() as session: query = session.query(models.PrioritizedItemDB).filter( models.PrioritizedItemDB.scheduler_id == scheduler_id @@ -31,7 +30,7 @@ def pop(self, scheduler_id: str, filters: Optional[FilterRequest] = None) -> Opt return models.PrioritizedItem.model_validate(item_orm) @retry() - def push(self, scheduler_id: str, item: models.PrioritizedItem) -> Optional[models.PrioritizedItem]: + def push(self, scheduler_id: str, item: models.PrioritizedItem) -> models.PrioritizedItem | None: with self.dbconn.session.begin() as session: item_orm = models.PrioritizedItemDB(**item.model_dump()) session.add(item_orm) @@ -39,7 +38,7 @@ def push(self, scheduler_id: str, item: models.PrioritizedItem) -> Optional[mode return models.PrioritizedItem.model_validate(item_orm) @retry() - def peek(self, scheduler_id: str, index: int) -> Optional[models.PrioritizedItem]: + def peek(self, scheduler_id: str, index: int) -> models.PrioritizedItem | None: with self.dbconn.session.begin() as session: item_orm = ( session.query(models.PrioritizedItemDB) @@ -76,7 +75,7 @@ def remove(self, scheduler_id: str, item_id: UUID) -> None: ) @retry() - def get(self, scheduler_id, item_id: UUID) -> Optional[models.PrioritizedItem]: + def get(self, scheduler_id, item_id: UUID) -> models.PrioritizedItem | None: with self.dbconn.session.begin() as session: item_orm = ( session.query(models.PrioritizedItemDB) @@ -115,8 +114,8 @@ def qsize(self, scheduler_id: str) -> int: def get_items( self, scheduler_id: str, - filters: Optional[FilterRequest], - ) -> Tuple[List[models.PrioritizedItem], int]: + filters: FilterRequest | None, + ) -> tuple[list[models.PrioritizedItem], int]: with self.dbconn.session.begin() as session: query = session.query(models.PrioritizedItemDB).filter( models.PrioritizedItemDB.scheduler_id == scheduler_id @@ -131,7 +130,7 @@ def get_items( return ([models.PrioritizedItem.model_validate(item_orm) for item_orm in items_orm], count) @retry() - def get_item_by_hash(self, scheduler_id: str, item_hash: str) -> Optional[models.PrioritizedItem]: + def get_item_by_hash(self, scheduler_id: str, item_hash: str) -> models.PrioritizedItem | None: with self.dbconn.session.begin() as session: item_orm = ( session.query(models.PrioritizedItemDB) @@ -147,7 +146,7 @@ def get_item_by_hash(self, scheduler_id: str, item_hash: str) -> Optional[models return models.PrioritizedItem.model_validate(item_orm) @retry() - def get_items_by_scheduler_id(self, scheduler_id: str) -> List[models.PrioritizedItem]: + def get_items_by_scheduler_id(self, scheduler_id: str) -> list[models.PrioritizedItem]: with self.dbconn.session.begin() as session: items_orm = ( session.query(models.PrioritizedItemDB) diff --git a/mula/scheduler/storage/task_store.py b/mula/scheduler/storage/task_store.py index d7256e699cf..c70842652c3 100644 --- a/mula/scheduler/storage/task_store.py +++ b/mula/scheduler/storage/task_store.py @@ -1,5 +1,4 @@ from datetime import datetime, timedelta, timezone -from typing import Dict, List, Optional, Tuple from sqlalchemy import exc, func @@ -18,15 +17,15 @@ def __init__(self, dbconn: DBConn) -> None: @retry() def get_tasks( self, - scheduler_id: Optional[str] = None, - task_type: Optional[str] = None, - status: Optional[str] = None, - min_created_at: Optional[datetime] = None, - max_created_at: Optional[datetime] = None, - filters: Optional[FilterRequest] = None, + scheduler_id: str | None = None, + task_type: str | None = None, + status: str | None = None, + min_created_at: datetime | None = None, + max_created_at: datetime | None = None, + filters: FilterRequest | None = None, offset: int = 0, limit: int = 100, - ) -> Tuple[List[models.Task], int]: + ) -> tuple[list[models.Task], int]: with self.dbconn.session.begin() as session: query = session.query(models.TaskDB) @@ -59,7 +58,7 @@ def get_tasks( return tasks, count @retry() - def get_task_by_id(self, task_id: str) -> Optional[models.Task]: + def get_task_by_id(self, task_id: str) -> models.Task | None: with self.dbconn.session.begin() as session: task_orm = session.query(models.TaskDB).filter(models.TaskDB.id == task_id).first() if task_orm is None: @@ -70,7 +69,7 @@ def get_task_by_id(self, task_id: str) -> Optional[models.Task]: return task @retry() - def get_tasks_by_hash(self, task_hash: str) -> Optional[List[models.Task]]: + def get_tasks_by_hash(self, task_hash: str) -> list[models.Task] | None: with self.dbconn.session.begin() as session: tasks_orm = ( session.query(models.TaskDB) @@ -87,7 +86,7 @@ def get_tasks_by_hash(self, task_hash: str) -> Optional[List[models.Task]]: return tasks @retry() - def get_latest_task_by_hash(self, task_hash: str) -> Optional[models.Task]: + def get_latest_task_by_hash(self, task_hash: str) -> models.Task | None: with self.dbconn.session.begin() as session: task_orm = ( session.query(models.TaskDB) @@ -104,7 +103,7 @@ def get_latest_task_by_hash(self, task_hash: str) -> Optional[models.Task]: return task @retry() - def create_task(self, task: models.Task) -> Optional[models.Task]: + def create_task(self, task: models.Task) -> models.Task | None: with self.dbconn.session.begin() as session: task_orm = models.TaskDB(**task.model_dump()) session.add(task_orm) @@ -119,7 +118,7 @@ def update_task(self, task: models.Task) -> None: (session.query(models.TaskDB).filter(models.TaskDB.id == task.id).update(task.model_dump())) @retry() - def cancel_tasks(self, scheduler_id: str, task_ids: List[str]) -> None: + def cancel_tasks(self, scheduler_id: str, task_ids: list[str]) -> None: with self.dbconn.session.begin() as session: session.query(models.TaskDB).filter( models.TaskDB.scheduler_id == scheduler_id, models.TaskDB.id.in_(task_ids) @@ -128,8 +127,8 @@ def cancel_tasks(self, scheduler_id: str, task_ids: List[str]) -> None: @retry() def get_status_count_per_hour( self, - scheduler_id: Optional[str] = None, - ) -> Optional[Dict[str, Dict[str, int]]]: + scheduler_id: str | None = None, + ) -> dict[str, dict[str, int]] | None: with self.dbconn.session.begin() as session: query = ( session.query( @@ -149,7 +148,7 @@ def get_status_count_per_hour( results = query.all() - response: Dict[str, Dict[str, int]] = {} + response: dict[str, dict[str, int]] = {} for row in results: date, status, task_count = row response.setdefault(date.isoformat(), {k.value: 0 for k in models.TaskStatus}).update( @@ -160,7 +159,7 @@ def get_status_count_per_hour( return response @retry() - def get_status_counts(self, scheduler_id: Optional[str] = None) -> Optional[Dict[str, int]]: + def get_status_counts(self, scheduler_id: str | None = None) -> dict[str, int] | None: with self.dbconn.session.begin() as session: query = ( session.query(models.TaskDB.status, func.count(models.TaskDB.id).label("count")) diff --git a/mula/scheduler/utils/dict_utils.py b/mula/scheduler/utils/dict_utils.py index 5480ed59f09..0548e15dcbe 100644 --- a/mula/scheduler/utils/dict_utils.py +++ b/mula/scheduler/utils/dict_utils.py @@ -1,9 +1,10 @@ import threading +from collections.abc import Iterator from datetime import datetime, timedelta, timezone -from typing import Any, Dict, Iterator, List, Optional +from typing import Any -def deep_get(d: Optional[Any], keys: List[str]) -> Any: +def deep_get(d: Any | None, keys: list[str]) -> Any: if not keys or d is None: return d return deep_get(d.get(keys[0]), keys[1:]) @@ -24,10 +25,10 @@ def __init__(self, lifetime: int = 300, start_time: datetime = datetime.now(time self.start_time = start_time self.expiration_time: datetime = start_time + self.lifetime self.lock: threading.Lock = threading.Lock() - self.cache: Dict[str, Any] = {} + self.cache: dict[str, Any] = {} self._expiration_enabled: bool = True - def get(self, key: str, default: Optional[Any] = None) -> Any: + def get(self, key: str, default: Any | None = None) -> Any: try: return self.__getitem__(key) except KeyError: diff --git a/mula/scheduler/utils/thread.py b/mula/scheduler/utils/thread.py index 5ebdaa9d73e..751186bb223 100644 --- a/mula/scheduler/utils/thread.py +++ b/mula/scheduler/utils/thread.py @@ -1,5 +1,6 @@ import threading -from typing import Any, Callable, Optional +from collections.abc import Callable +from typing import Any import structlog @@ -30,9 +31,9 @@ def __init__( name: str, target: Callable[[], Any], stop_event: threading.Event, - callback: Optional[Callable[[], Any]] = None, - callback_args: Optional[tuple] = None, - interval: Optional[float] = None, + callback: Callable[[], Any] | None = None, + callback_args: tuple | None = None, + interval: float | None = None, daemon: bool = False, loop: bool = True, ) -> None: @@ -49,11 +50,11 @@ def __init__( self.logger: structlog.BoundLogger = structlog.getLogger(__name__) self._target: Callable[[], Any] = target self.stop_event: threading.Event = stop_event - self.interval: Optional[float] = interval + self.interval: float | None = interval self.loop: bool = loop - self.exception: Optional[Exception] = None - self.callback: Optional[Callable[[], Any]] = callback - self.callback_args: Optional[tuple] = callback_args + self.exception: Exception | None = None + self.callback: Callable[[], Any] | None = callback + self.callback_args: tuple | None = callback_args super().__init__(target=self._target, daemon=daemon) @@ -96,7 +97,7 @@ def run(self) -> None: self.logger.debug("Thread stopped: %s", self.name) - def join(self, timeout: Optional[float] = None) -> None: + def join(self, timeout: float | None = None) -> None: self.logger.debug("Stopping thread: %s", self.name, thread_name=self.name) self.stop_event.set() diff --git a/mula/tests/factories/boefje.py b/mula/tests/factories/boefje.py index cced7ff3d98..8418f7ed9bc 100644 --- a/mula/tests/factories/boefje.py +++ b/mula/tests/factories/boefje.py @@ -1,5 +1,5 @@ from datetime import datetime, timedelta, timezone -from typing import Any, Dict, List +from typing import Any from factory import Factory, Faker, LazyFunction, fuzzy from scheduler.models import Boefje, BoefjeMeta @@ -13,8 +13,8 @@ class Meta: name: str = Faker("name") description: str = Faker("text") scan_level: int = fuzzy.FuzzyInteger(0, 4) - consumes: List[str] = LazyFunction(lambda: []) - produces: List[str] = LazyFunction(lambda: []) + consumes: list[str] = LazyFunction(lambda: []) + produces: list[str] = LazyFunction(lambda: []) class BoefjeMetaFactory(Factory): @@ -22,7 +22,7 @@ class Meta: model = BoefjeMeta id: str = Faker("uuid4") - arguments: Dict[str, Any] = {} + arguments: dict[str, Any] = {} organization: str = Faker("company") started_at: datetime = datetime.now(timezone.utc) - timedelta(days=2) ended_at: datetime = datetime.now(timezone.utc) - timedelta(days=2) diff --git a/mula/tests/factories/plugin.py b/mula/tests/factories/plugin.py index 973b255c709..23f07e1778f 100644 --- a/mula/tests/factories/plugin.py +++ b/mula/tests/factories/plugin.py @@ -1,5 +1,3 @@ -from typing import List - from factory import Factory, LazyFunction, Sequence, fuzzy from scheduler.models import Plugin @@ -12,8 +10,8 @@ class Meta: type: str = fuzzy.FuzzyChoice(["boefje"]) - consumes: List[str] = LazyFunction(lambda: []) + consumes: list[str] = LazyFunction(lambda: []) - produces: List[str] = LazyFunction(lambda: []) + produces: list[str] = LazyFunction(lambda: []) enabled: bool = True diff --git a/mula/tests/factories/raw_data.py b/mula/tests/factories/raw_data.py index 24469765420..46d2a77a05b 100644 --- a/mula/tests/factories/raw_data.py +++ b/mula/tests/factories/raw_data.py @@ -1,5 +1,3 @@ -from typing import Dict, List - from factory import Factory, Faker from scheduler.models import BoefjeMeta, RawData @@ -10,6 +8,6 @@ class Meta: id: str = Faker("uuid4") boefje_meta: BoefjeMeta = None - mime_types: List[Dict[str, str]] = [{"value": "text/plain"}, {"value": "text/html"}, {"value": "text/xml"}] + mime_types: list[dict[str, str]] = [{"value": "text/plain"}, {"value": "text/html"}, {"value": "text/xml"}] secure_hash: str = "" hash_retrieval_link: str = "" diff --git a/mula/tests/mocks/services.py b/mula/tests/mocks/services.py index 702ac07ba31..847506666e5 100644 --- a/mula/tests/mocks/services.py +++ b/mula/tests/mocks/services.py @@ -1,21 +1,19 @@ -from typing import Dict, List - from scheduler import models class MockKatalogusService: def __init__(self): - self.organisations: Dict[str, models.Organisation] = {} + self.organisations: dict[str, models.Organisation] = {} def get_organisation(self, org_id: str) -> models.Organisation: """Get the organisation with the given id.""" return self.organisations[org_id] - def get_organisations(self) -> List[models.Organisation]: + def get_organisations(self) -> list[models.Organisation]: """Get all organisations.""" return list(self.organisations.values()) - def get_new_boefjes_by_org_id(self, org_id: str) -> List[models.Boefje]: + def get_new_boefjes_by_org_id(self, org_id: str) -> list[models.Boefje]: """Get all new Boefjes for the given organisation.""" return [] diff --git a/mula/tests/scripts/load.py b/mula/tests/scripts/load.py index 290cd18cc36..91e4fae5db4 100644 --- a/mula/tests/scripts/load.py +++ b/mula/tests/scripts/load.py @@ -3,7 +3,7 @@ import uuid from datetime import datetime, timezone from pathlib import Path -from typing import Any, Dict, List +from typing import Any import requests @@ -14,7 +14,7 @@ def run(org_num: int = 1): # Create organisations - orgs: List[Dict[str, Any]] = [] + orgs: list[dict[str, Any]] = [] for n in range(0, org_num): org = { "id": f"org-{n}", @@ -66,7 +66,7 @@ def run(org_num: int = 1): print("Enabled boefje ", boefje_id) - declarations: List[Dict[str, Any]] = [] + declarations: list[dict[str, Any]] = [] # Check if data file exists if not Path("data.csv").exists(): diff --git a/mula/tests/utils/functions.py b/mula/tests/utils/functions.py index 29dbfda300e..af08da29598 100644 --- a/mula/tests/utils/functions.py +++ b/mula/tests/utils/functions.py @@ -1,5 +1,5 @@ import uuid -from typing import Any, ClassVar, List, Optional +from typing import Any, ClassVar import pydantic from scheduler import models @@ -12,7 +12,7 @@ class TestModel(pydantic.BaseModel): id: str name: str count: int = 0 - categories: List[str] = None + categories: list[str] = None child: Any = None def __init__(self, **data: Any): @@ -22,7 +22,7 @@ def __init__(self, **data: Any): self.categories = [] -def create_p_item_request(priority: int, data: Optional[TestModel] = None) -> models.PrioritizedItemRequest: +def create_p_item_request(priority: int, data: TestModel | None = None) -> models.PrioritizedItemRequest: if data is None: data = TestModel( id=uuid.uuid4().hex, @@ -35,7 +35,7 @@ def create_p_item_request(priority: int, data: Optional[TestModel] = None) -> mo ) -def create_p_item(scheduler_id: str, priority: int, data: Optional[TestModel] = None) -> models.PrioritizedItem: +def create_p_item(scheduler_id: str, priority: int, data: TestModel | None = None) -> models.PrioritizedItem: if data is None: data = TestModel( id=uuid.uuid4().hex, diff --git a/octopoes/.ci/mock_bits/url_classification_mock/url_classification_mock.py b/octopoes/.ci/mock_bits/url_classification_mock/url_classification_mock.py index 974f9276632..cfb3d594ebd 100644 --- a/octopoes/.ci/mock_bits/url_classification_mock/url_classification_mock.py +++ b/octopoes/.ci/mock_bits/url_classification_mock/url_classification_mock.py @@ -1,5 +1,5 @@ +from collections.abc import Iterator from ipaddress import IPv4Address, ip_address -from typing import Dict, Iterator, List from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname @@ -7,7 +7,7 @@ from octopoes.models.ooi.web import URL, HostnameHTTPURL, IPAddressHTTPURL, WebScheme -def run(url: URL, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(url: URL, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: if url.raw.scheme == "http" or url.raw.scheme == "https": port = url.raw.port if port is None: diff --git a/octopoes/bits/ask_port_specification/ask_port_specification.py b/octopoes/bits/ask_port_specification/ask_port_specification.py index 1c2634cc693..fddd78e3800 100644 --- a/octopoes/bits/ask_port_specification/ask_port_specification.py +++ b/octopoes/bits/ask_port_specification/ask_port_specification.py @@ -1,6 +1,6 @@ import json +from collections.abc import Iterator from pathlib import Path -from typing import Dict, Iterator, List from octopoes.models import OOI from octopoes.models.ooi.network import Network @@ -9,8 +9,8 @@ def run( input_ooi: Network, - additional_oois: List, - config: Dict[str, str], + additional_oois: list, + config: dict[str, str], ) -> Iterator[OOI]: network = input_ooi diff --git a/octopoes/bits/check_csp_header/check_csp_header.py b/octopoes/bits/check_csp_header/check_csp_header.py index a0a072b7cda..143039f3f5a 100644 --- a/octopoes/bits/check_csp_header/check_csp_header.py +++ b/octopoes/bits/check_csp_header/check_csp_header.py @@ -1,6 +1,6 @@ import ipaddress import re -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType @@ -9,7 +9,7 @@ NON_DECIMAL_FILTER = re.compile(r"[^\d.]+") -def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: header = input_ooi if header.key.lower() != "content-security-policy": return diff --git a/octopoes/bits/check_cve_2021_41773/check_cve_2021_41773.py b/octopoes/bits/check_cve_2021_41773/check_cve_2021_41773.py index a08e8ce7e1e..6e3837391c1 100644 --- a/octopoes/bits/check_cve_2021_41773/check_cve_2021_41773.py +++ b/octopoes/bits/check_cve_2021_41773/check_cve_2021_41773.py @@ -1,11 +1,11 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import CVEFindingType, Finding from octopoes.models.types import HTTPHeader -def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: header = input_ooi if header.key.lower() != "server": return diff --git a/octopoes/bits/check_hsts_header/check_hsts_header.py b/octopoes/bits/check_hsts_header/check_hsts_header.py index eeb58449a2d..a7650649380 100644 --- a/octopoes/bits/check_hsts_header/check_hsts_header.py +++ b/octopoes/bits/check_hsts_header/check_hsts_header.py @@ -1,12 +1,12 @@ import datetime -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType from octopoes.models.types import HTTPHeader -def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: header = input_ooi if header.key.lower() != "strict-transport-security": return diff --git a/octopoes/bits/cipher_classification/cipher_classification.py b/octopoes/bits/cipher_classification/cipher_classification.py index 96a0116abbd..8a4594613cf 100644 --- a/octopoes/bits/cipher_classification/cipher_classification.py +++ b/octopoes/bits/cipher_classification/cipher_classification.py @@ -1,6 +1,6 @@ import csv +from collections.abc import Iterator from pathlib import Path -from typing import Dict, Iterator, List, Tuple from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType @@ -13,7 +13,7 @@ } -def get_severity_and_reasons(cipher_suite) -> List[Tuple[str, str]]: +def get_severity_and_reasons(cipher_suite) -> list[tuple[str, str]]: with Path.open(Path(__file__).parent / "list-ciphers-openssl-with-finding-type.csv", newline="") as csvfile: reader = csv.DictReader(csvfile) data = [{k.strip(): v.strip() for k, v in row.items() if k} for row in reader] @@ -43,7 +43,7 @@ def get_severity_and_reasons(cipher_suite) -> List[Tuple[str, str]]: return severities_and_reasons -def get_highest_severity_and_all_reasons(cipher_suites: Dict) -> Tuple[str, str]: +def get_highest_severity_and_all_reasons(cipher_suites: dict) -> tuple[str, str]: # Define severity levels severity_levels = {"Critical": 3, "Medium": 2, "Recommendation": 1} diff --git a/octopoes/bits/default_findingtype_risk/default_findingtype_risk.py b/octopoes/bits/default_findingtype_risk/default_findingtype_risk.py index 4416e2731ef..27aa471d591 100644 --- a/octopoes/bits/default_findingtype_risk/default_findingtype_risk.py +++ b/octopoes/bits/default_findingtype_risk/default_findingtype_risk.py @@ -1,10 +1,10 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import FindingType, RiskLevelSeverity -def run(input_ooi: FindingType, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: FindingType, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: value_set = False if not input_ooi.risk_severity: input_ooi.risk_severity = RiskLevelSeverity.PENDING diff --git a/octopoes/bits/definitions.py b/octopoes/bits/definitions.py index 3631ef02110..58e82a19dcb 100644 --- a/octopoes/bits/definitions.py +++ b/octopoes/bits/definitions.py @@ -4,7 +4,6 @@ from logging import getLogger from pathlib import Path from types import ModuleType -from typing import Dict, List, Optional, Type from pydantic import BaseModel @@ -16,22 +15,22 @@ class BitParameterDefinition(BaseModel): - ooi_type: Type[OOIType] + ooi_type: type[OOIType] relation_path: str class BitDefinition(BaseModel): id: str - consumes: Type[OOIType] - parameters: List[BitParameterDefinition] + consumes: type[OOIType] + parameters: list[BitParameterDefinition] module: str min_scan_level: int = 1 default_enabled: bool = True - config_ooi_relation_path: Optional[str] = None + config_ooi_relation_path: str | None = None @lru_cache(maxsize=32) -def get_bit_definitions() -> Dict[str, BitDefinition]: +def get_bit_definitions() -> dict[str, BitDefinition]: bit_definitions = {} for package in pkgutil.walk_packages([str(BITS_DIR)]): diff --git a/octopoes/bits/dns_alias_resolving/dns_alias_resolving.py b/octopoes/bits/dns_alias_resolving/dns_alias_resolving.py index ddccbe766d2..e23ded9dab4 100644 --- a/octopoes/bits/dns_alias_resolving/dns_alias_resolving.py +++ b/octopoes/bits/dns_alias_resolving/dns_alias_resolving.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.records import DNSCNAMERecord @@ -7,7 +7,7 @@ def run( - hostname: Hostname, additional_oois: List[Union[DNSCNAMERecord, ResolvedHostname]], config: Dict[str, str] + hostname: Hostname, additional_oois: list[DNSCNAMERecord | ResolvedHostname], config: dict[str, str] ) -> Iterator[OOI]: cname_records = [ooi for ooi in additional_oois if isinstance(ooi, DNSCNAMERecord)] resolved_hostnames = [ooi for ooi in additional_oois if isinstance(ooi, ResolvedHostname)] diff --git a/octopoes/bits/dns_resolving/dns_resolving.py b/octopoes/bits/dns_resolving/dns_resolving.py index 99186b7c449..1722ac3254a 100644 --- a/octopoes/bits/dns_resolving/dns_resolving.py +++ b/octopoes/bits/dns_resolving/dns_resolving.py @@ -1,13 +1,11 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.records import DNSAAAARecord, DNSARecord from octopoes.models.ooi.dns.zone import Hostname, ResolvedHostname -def run( - hostname: Hostname, additional_oois: List[Union[DNSARecord, DNSAAAARecord]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(hostname: Hostname, additional_oois: list[DNSARecord | DNSAAAARecord], config: dict[str, str]) -> Iterator[OOI]: for record in additional_oois: yield ResolvedHostname( hostname=hostname.reference, diff --git a/octopoes/bits/expiring_certificate/expiring_certificate.py b/octopoes/bits/expiring_certificate/expiring_certificate.py index 17fdeda1a25..5224d632209 100644 --- a/octopoes/bits/expiring_certificate/expiring_certificate.py +++ b/octopoes/bits/expiring_certificate/expiring_certificate.py @@ -1,5 +1,5 @@ import datetime -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.certificate import X509Certificate @@ -9,7 +9,7 @@ THRESHOLD = datetime.timedelta(weeks=2) -def run(input_ooi: X509Certificate, additional_oois: List[Website], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: X509Certificate, additional_oois: list[Website], config: dict[str, str]) -> Iterator[OOI]: # only applies to OOIs referencing the certificate if input_ooi.expired: ft = KATFindingType(id="KAT-CERTIFICATE-EXPIRED") diff --git a/octopoes/bits/https_availability/https_availability.py b/octopoes/bits/https_availability/https_availability.py index e873f1a6d0a..e68795672c8 100644 --- a/octopoes/bits/https_availability/https_availability.py +++ b/octopoes/bits/https_availability/https_availability.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType @@ -6,7 +6,7 @@ from octopoes.models.ooi.web import Website -def run(input_ooi: IPAddress, additional_oois: List[Union[IPPort, Website]], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: IPAddress, additional_oois: list[IPPort | Website], config: dict[str, str]) -> Iterator[OOI]: websites = [website for website in additional_oois if isinstance(website, Website)] open_ports = [port.port for port in additional_oois if isinstance(port, IPPort)] diff --git a/octopoes/bits/https_redirect/https_redirect.py b/octopoes/bits/https_redirect/https_redirect.py index 7cf0d6076b8..3be8c16b695 100644 --- a/octopoes/bits/https_redirect/https_redirect.py +++ b/octopoes/bits/https_redirect/https_redirect.py @@ -1,11 +1,11 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType from octopoes.models.ooi.web import HostnameHTTPURL, HTTPHeader -def run(input_ooi: HostnameHTTPURL, additional_oois: List[HTTPHeader], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: HostnameHTTPURL, additional_oois: list[HTTPHeader], config: dict[str, str]) -> Iterator[OOI]: header_keys = [header.key.lower() for header in additional_oois if isinstance(header, HTTPHeader)] # only check for http urls diff --git a/octopoes/bits/internetnl/internetnl.py b/octopoes/bits/internetnl/internetnl.py index cb28636c27e..7190a96981a 100644 --- a/octopoes/bits/internetnl/internetnl.py +++ b/octopoes/bits/internetnl/internetnl.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname @@ -6,7 +6,7 @@ from octopoes.models.ooi.web import Website -def run(input_ooi: Hostname, additional_oois: List[Union[Finding, Website]], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[Finding | Website], config: dict[str, str]) -> Iterator[OOI]: # only websites have to comply with the internetnl rules websites = [websites for websites in additional_oois if isinstance(websites, Website)] if not websites: diff --git a/octopoes/bits/ipv6_nameservers/ipv6_nameservers.py b/octopoes/bits/ipv6_nameservers/ipv6_nameservers.py index 8722537362f..9f2ff672ded 100644 --- a/octopoes/bits/ipv6_nameservers/ipv6_nameservers.py +++ b/octopoes/bits/ipv6_nameservers/ipv6_nameservers.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.records import DNSAAAARecord, DNSARecord, DNSNSRecord @@ -6,9 +6,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - hostname: Hostname, additional_oois: List[Union[DNSAAAARecord, DNSARecord]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(hostname: Hostname, additional_oois: list[DNSAAAARecord | DNSARecord], config: dict[str, str]) -> Iterator[OOI]: dns_ns_records = [dns_ns_record for dns_ns_record in additional_oois if isinstance(dns_ns_record, DNSNSRecord)] dns_aaaa_records = [ dns_aaaa_record for dns_aaaa_record in additional_oois if isinstance(dns_aaaa_record, DNSAAAARecord) diff --git a/octopoes/bits/ipv6_webservers/ipv6_webservers.py b/octopoes/bits/ipv6_webservers/ipv6_webservers.py index 752a8a78d28..24019a5c160 100644 --- a/octopoes/bits/ipv6_webservers/ipv6_webservers.py +++ b/octopoes/bits/ipv6_webservers/ipv6_webservers.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.records import DNSAAAARecord, DNSARecord, DNSNSRecord @@ -7,7 +7,7 @@ def run( - hostname: Hostname, additional_oois: List[Union[DNSAAAARecord, DNSARecord, DNSNSRecord]], config: Dict[str, str] + hostname: Hostname, additional_oois: list[DNSAAAARecord | DNSARecord | DNSNSRecord], config: dict[str, str] ) -> Iterator[OOI]: dns_a_records = [dns_a_record for dns_a_record in additional_oois if isinstance(dns_a_record, DNSARecord)] dns_aaaa_records = [ diff --git a/octopoes/bits/missing_caa/missing_caa.py b/octopoes/bits/missing_caa/missing_caa.py index 88a4726fd23..94515d57a87 100644 --- a/octopoes/bits/missing_caa/missing_caa.py +++ b/octopoes/bits/missing_caa/missing_caa.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator import tldextract @@ -8,9 +8,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - input_ooi: Hostname, additional_oois: List[Union[DNSCAARecord, NXDOMAIN]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[DNSCAARecord | NXDOMAIN], config: dict[str, str]) -> Iterator[OOI]: caa_records = [ooi for ooi in additional_oois if isinstance(ooi, DNSCAARecord)] nxdomains = (ooi for ooi in additional_oois if isinstance(ooi, NXDOMAIN)) diff --git a/octopoes/bits/missing_certificate/missing_certificate.py b/octopoes/bits/missing_certificate/missing_certificate.py index e07892a0499..998cc452a12 100644 --- a/octopoes/bits/missing_certificate/missing_certificate.py +++ b/octopoes/bits/missing_certificate/missing_certificate.py @@ -1,11 +1,11 @@ -from typing import Dict, Iterator +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType from octopoes.models.ooi.web import Website -def run(input_ooi: Website, additional_oois, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: Website, additional_oois, config: dict[str, str]) -> Iterator[OOI]: if input_ooi.ip_service.tokenized.service.name.lower() != "https": return diff --git a/octopoes/bits/missing_dkim/missing_dkim.py b/octopoes/bits/missing_dkim/missing_dkim.py index f4fc4f5fdf3..d9228f34963 100644 --- a/octopoes/bits/missing_dkim/missing_dkim.py +++ b/octopoes/bits/missing_dkim/missing_dkim.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator import tldextract @@ -9,9 +9,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - input_ooi: Hostname, additional_oois: List[Union[DKIMExists, NXDOMAIN]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[DKIMExists | NXDOMAIN], config: dict[str, str]) -> Iterator[OOI]: dkim_exists = [ooi for ooi in additional_oois if isinstance(ooi, DKIMExists)] nxdomains = (ooi for ooi in additional_oois if isinstance(ooi, NXDOMAIN)) diff --git a/octopoes/bits/missing_dmarc/missing_dmarc.py b/octopoes/bits/missing_dmarc/missing_dmarc.py index 8490e2956b5..49ff1954063 100644 --- a/octopoes/bits/missing_dmarc/missing_dmarc.py +++ b/octopoes/bits/missing_dmarc/missing_dmarc.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator import tldextract @@ -9,9 +9,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - input_ooi: Hostname, additional_oois: List[Union[DMARCTXTRecord, NXDOMAIN]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[DMARCTXTRecord | NXDOMAIN], config: dict[str, str]) -> Iterator[OOI]: dmarc_records = [ooi for ooi in additional_oois if isinstance(ooi, DMARCTXTRecord)] nxdomains = (ooi for ooi in additional_oois if isinstance(ooi, NXDOMAIN)) diff --git a/octopoes/bits/missing_headers/missing_headers.py b/octopoes/bits/missing_headers/missing_headers.py index a5cfa9f690b..9c676fe5183 100644 --- a/octopoes/bits/missing_headers/missing_headers.py +++ b/octopoes/bits/missing_headers/missing_headers.py @@ -1,11 +1,11 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType from octopoes.models.ooi.web import HTTPHeader, HTTPResource -def run(resource: HTTPResource, additional_oois: List[HTTPHeader], config: Dict[str, str]) -> Iterator[OOI]: +def run(resource: HTTPResource, additional_oois: list[HTTPHeader], config: dict[str, str]) -> Iterator[OOI]: if not additional_oois: return diff --git a/octopoes/bits/missing_spf/missing_spf.py b/octopoes/bits/missing_spf/missing_spf.py index 0fce016aa14..07613d9872e 100644 --- a/octopoes/bits/missing_spf/missing_spf.py +++ b/octopoes/bits/missing_spf/missing_spf.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator import tldextract @@ -9,9 +9,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - input_ooi: Hostname, additional_oois: List[Union[DNSSPFRecord, NXDOMAIN]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[DNSSPFRecord | NXDOMAIN], config: dict[str, str]) -> Iterator[OOI]: spf_records = [ooi for ooi in additional_oois if isinstance(ooi, DNSSPFRecord)] nxdomains = (ooi for ooi in additional_oois if isinstance(ooi, NXDOMAIN)) diff --git a/octopoes/bits/nxdomain_flag/nxdomain_flag.py b/octopoes/bits/nxdomain_flag/nxdomain_flag.py index 2ea985ed615..6cbc7942897 100644 --- a/octopoes/bits/nxdomain_flag/nxdomain_flag.py +++ b/octopoes/bits/nxdomain_flag/nxdomain_flag.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname @@ -6,7 +6,7 @@ from octopoes.models.types import NXDOMAIN -def run(input_ooi: Hostname, additional_oois: List[NXDOMAIN], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: Hostname, additional_oois: list[NXDOMAIN], config: dict[str, str]) -> Iterator[OOI]: if additional_oois: nxdomain = KATFindingType(id="KAT-NXDOMAIN") yield nxdomain diff --git a/octopoes/bits/nxdomain_header_flag/nxdomain_header_flag.py b/octopoes/bits/nxdomain_header_flag/nxdomain_header_flag.py index 4421ee03d1f..ca7298b41d5 100644 --- a/octopoes/bits/nxdomain_header_flag/nxdomain_header_flag.py +++ b/octopoes/bits/nxdomain_header_flag/nxdomain_header_flag.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname @@ -8,7 +8,7 @@ def run( - input_ooi: Hostname, additional_oois: List[Union[NXDOMAIN, HTTPHeaderHostname]], config: Dict[str, str] + input_ooi: Hostname, additional_oois: list[NXDOMAIN | HTTPHeaderHostname], config: dict[str, str] ) -> Iterator[OOI]: hostname_exists = True headers = [] diff --git a/octopoes/bits/oois_in_headers/oois_in_headers.py b/octopoes/bits/oois_in_headers/oois_in_headers.py index 4f83a398cdb..7988c1e0220 100644 --- a/octopoes/bits/oois_in_headers/oois_in_headers.py +++ b/octopoes/bits/oois_in_headers/oois_in_headers.py @@ -1,5 +1,5 @@ import re -from typing import Dict, Iterator, List +from collections.abc import Iterator from urllib.parse import urljoin, urlparse from pydantic import ValidationError @@ -15,7 +15,7 @@ def is_url(input_str): return bool(result.scheme) -def run(input_ooi: HTTPHeader, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: network = Network(name="internet") if input_ooi.key.lower() == "location": diff --git a/octopoes/bits/port_classification_ip/port_classification_ip.py b/octopoes/bits/port_classification_ip/port_classification_ip.py index 2daf35e3e79..5b7fbd317e3 100644 --- a/octopoes/bits/port_classification_ip/port_classification_ip.py +++ b/octopoes/bits/port_classification_ip/port_classification_ip.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType @@ -44,7 +44,7 @@ def get_ports_from_config(config, config_key, default): return list(map(int, ports.split(","))) if ports else [] -def run(input_ooi: IPPort, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: IPPort, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: aggregate_findings = config.get("aggregate_findings", "False").lower() == "true" if config else False open_ports = [] diff --git a/octopoes/bits/port_common/port_common.py b/octopoes/bits/port_common/port_common.py index e55f9a8a7c7..6d660903257 100644 --- a/octopoes/bits/port_common/port_common.py +++ b/octopoes/bits/port_common/port_common.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.findings import Finding, KATFindingType @@ -24,8 +24,8 @@ def run( input_ooi: IPPort, - additional_oois: List, - config: Dict[str, str], + additional_oois: list, + config: dict[str, str], ) -> Iterator[OOI]: port = input_ooi.port protocol = input_ooi.protocol diff --git a/octopoes/bits/resource_discovery/resource_discovery.py b/octopoes/bits/resource_discovery/resource_discovery.py index 66a4fb8466a..6b3a3cc7406 100644 --- a/octopoes/bits/resource_discovery/resource_discovery.py +++ b/octopoes/bits/resource_discovery/resource_discovery.py @@ -1,13 +1,11 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.web import HostnameHTTPURL, HTTPResource, Website -def run( - hostname: Hostname, additional_oois: List[Union[HostnameHTTPURL, Website]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(hostname: Hostname, additional_oois: list[HostnameHTTPURL | Website], config: dict[str, str]) -> Iterator[OOI]: hostname_http_urls = [ hostname_http_url for hostname_http_url in additional_oois if isinstance(hostname_http_url, HostnameHTTPURL) ] diff --git a/octopoes/bits/retire_js/retire_js.py b/octopoes/bits/retire_js/retire_js.py index a311b5eb5d9..9cd42f98089 100644 --- a/octopoes/bits/retire_js/retire_js.py +++ b/octopoes/bits/retire_js/retire_js.py @@ -1,7 +1,7 @@ import hashlib import json +from collections.abc import Iterator from pathlib import Path -from typing import Dict, Iterator, List, Union from octopoes.models import OOI from octopoes.models.ooi.findings import CVEFindingType, Finding, RetireJSFindingType @@ -9,7 +9,7 @@ from packaging import version -def run(input_ooi: Software, additional_oois: List[SoftwareInstance], config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: Software, additional_oois: list[SoftwareInstance], config: dict[str, str]) -> Iterator[OOI]: software_name = input_ooi.name software_version = input_ooi.version if input_ooi.version else "999.9.9" @@ -39,8 +39,8 @@ def run(input_ooi: Software, additional_oois: List[SoftwareInstance], config: Di ) -def _check_vulnerabilities(name, package_version: str, known_vulnerabilities: Dict) -> Dict[str, List[str]]: - vulnerabilities: Dict[str, List[str]] = {"CVE": [], "RetireJS": []} +def _check_vulnerabilities(name, package_version: str, known_vulnerabilities: dict) -> dict[str, list[str]]: + vulnerabilities: dict[str, list[str]] = {"CVE": [], "RetireJS": []} processed_name = _process_name(name) found_brands = [brand for brand in known_vulnerabilities if processed_name == _process_name(brand)] @@ -61,7 +61,7 @@ def _process_name(name: str) -> str: return name.lower().replace(" ", "").replace("_", "").replace("-", "").replace(".", "") -def _hash_identifiers(identifiers: Dict[str, Union[str, List[str]]]) -> str: +def _hash_identifiers(identifiers: dict[str, str | list[str]]) -> str: pre_hash = "" for identifier in identifiers.values(): pre_hash += "".join(identifier) diff --git a/octopoes/bits/runner.py b/octopoes/bits/runner.py index 5c494acade7..c0f69be51cf 100644 --- a/octopoes/bits/runner.py +++ b/octopoes/bits/runner.py @@ -1,6 +1,7 @@ +from collections.abc import Iterator from importlib import import_module from inspect import isfunction, signature -from typing import Any, Dict, Iterator, List, Protocol, cast +from typing import Any, Protocol, cast from bits.definitions import BitDefinition from octopoes.models import OOI @@ -19,7 +20,7 @@ class BitRunner: def __init__(self, bit_definition: BitDefinition): self.module = bit_definition.module - def run(self, *args, **kwargs) -> List[OOI]: + def run(self, *args, **kwargs) -> list[OOI]: module = import_module(self.module) module = cast(Runnable, module) @@ -36,7 +37,7 @@ def __str__(self): return f"BitRunner {self.module}" -def _bit_run_signature(input_ooi: OOI, additional_oois: List[OOI], config: Dict[str, str]) -> Iterator[OOI]: +def _bit_run_signature(input_ooi: OOI, additional_oois: list[OOI], config: dict[str, str]) -> Iterator[OOI]: ... diff --git a/octopoes/bits/spf_discovery/spf_discovery.py b/octopoes/bits/spf_discovery/spf_discovery.py index 9973f7bf4f2..acfa9e1412b 100644 --- a/octopoes/bits/spf_discovery/spf_discovery.py +++ b/octopoes/bits/spf_discovery/spf_discovery.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator +from collections.abc import Iterator from bits.spf_discovery.internetnl_spf_parser import parse from octopoes.models import OOI @@ -9,7 +9,7 @@ from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, Network -def run(input_ooi: DNSTXTRecord, additional_oois, config: Dict[str, str]) -> Iterator[OOI]: +def run(input_ooi: DNSTXTRecord, additional_oois, config: dict[str, str]) -> Iterator[OOI]: if input_ooi.value.startswith("v=spf1"): spf_value = input_ooi.value.replace("%(d)", input_ooi.hostname.tokenized.name) parsed = parse(spf_value) diff --git a/octopoes/bits/ssl_certificate_hostname/ssl_certificate_hostname.py b/octopoes/bits/ssl_certificate_hostname/ssl_certificate_hostname.py index 10a65f8b95c..88c23bccc84 100644 --- a/octopoes/bits/ssl_certificate_hostname/ssl_certificate_hostname.py +++ b/octopoes/bits/ssl_certificate_hostname/ssl_certificate_hostname.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.certificate import ( @@ -17,14 +17,14 @@ def is_part_of_wildcard(hostname: str, wildcard: str) -> bool: return wildcard_domain == higher_level_domain -def hostname_in_qualifiers(hostname: str, qualifiers: List[str]) -> bool: +def hostname_in_qualifiers(hostname: str, qualifiers: list[str]) -> bool: return any(is_part_of_wildcard(hostname, qualifier) for qualifier in qualifiers) def run( input_ooi: X509Certificate, - additional_oois: List[Union[Website, SubjectAlternativeNameHostname]], - config: Dict[str, str], + additional_oois: list[Website | SubjectAlternativeNameHostname], + config: dict[str, str], ) -> Iterator[OOI]: websites = [website for website in additional_oois if isinstance(website, Website)] subject_alternative_name_hostnames = [ diff --git a/octopoes/bits/two_ipv6_nameservers/two_ipv6_nameservers.py b/octopoes/bits/two_ipv6_nameservers/two_ipv6_nameservers.py index 07fc8001e6a..4002c5d2d1a 100644 --- a/octopoes/bits/two_ipv6_nameservers/two_ipv6_nameservers.py +++ b/octopoes/bits/two_ipv6_nameservers/two_ipv6_nameservers.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.records import DNSNSRecord @@ -6,9 +6,7 @@ from octopoes.models.ooi.findings import Finding, KATFindingType -def run( - hostname: Hostname, additional_oois: List[Union[Finding, DNSNSRecord]], config: Dict[str, str] -) -> Iterator[OOI]: +def run(hostname: Hostname, additional_oois: list[Finding | DNSNSRecord], config: dict[str, str]) -> Iterator[OOI]: no_ipv6_findings = [ finding for finding in additional_oois diff --git a/octopoes/bits/url_classification/url_classification.py b/octopoes/bits/url_classification/url_classification.py index 974f9276632..cfb3d594ebd 100644 --- a/octopoes/bits/url_classification/url_classification.py +++ b/octopoes/bits/url_classification/url_classification.py @@ -1,5 +1,5 @@ +from collections.abc import Iterator from ipaddress import IPv4Address, ip_address -from typing import Dict, Iterator, List from octopoes.models import OOI from octopoes.models.ooi.dns.zone import Hostname @@ -7,7 +7,7 @@ from octopoes.models.ooi.web import URL, HostnameHTTPURL, IPAddressHTTPURL, WebScheme -def run(url: URL, additional_oois: List, config: Dict[str, str]) -> Iterator[OOI]: +def run(url: URL, additional_oois: list, config: dict[str, str]) -> Iterator[OOI]: if url.raw.scheme == "http" or url.raw.scheme == "https": port = url.raw.port if port is None: diff --git a/octopoes/bits/url_discovery/url_discovery.py b/octopoes/bits/url_discovery/url_discovery.py index d23da844ea8..3b2142ad4f4 100644 --- a/octopoes/bits/url_discovery/url_discovery.py +++ b/octopoes/bits/url_discovery/url_discovery.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import ResolvedHostname @@ -7,7 +7,7 @@ def run( - ip_address: IPAddress, additional_oois: List[Union[IPPort, ResolvedHostname]], config: Dict[str, str] + ip_address: IPAddress, additional_oois: list[IPPort | ResolvedHostname], config: dict[str, str] ) -> Iterator[OOI]: hostnames = [resolved.hostname for resolved in additional_oois if isinstance(resolved, ResolvedHostname)] ip_ports = [ip_port for ip_port in additional_oois if isinstance(ip_port, IPPort)] diff --git a/octopoes/bits/website_discovery/website_discovery.py b/octopoes/bits/website_discovery/website_discovery.py index ba7f59cb093..4bdbd2f87b1 100644 --- a/octopoes/bits/website_discovery/website_discovery.py +++ b/octopoes/bits/website_discovery/website_discovery.py @@ -1,4 +1,4 @@ -from typing import Dict, Iterator, List, Union +from collections.abc import Iterator from octopoes.models import OOI from octopoes.models.ooi.dns.zone import ResolvedHostname @@ -8,7 +8,7 @@ def run( - ip_address: IPAddressV4, additional_oois: List[Union[IPService, ResolvedHostname]], config: Dict[str, str] + ip_address: IPAddressV4, additional_oois: list[IPService | ResolvedHostname], config: dict[str, str] ) -> Iterator[OOI]: def is_service_http(ip_service: IPService) -> bool: return "http" in ip_service.service.tokenized.name.lower().strip() diff --git a/octopoes/octopoes/api/models.py b/octopoes/octopoes/api/models.py index adeb2c7f54e..79da71ba3a1 100644 --- a/octopoes/octopoes/api/models.py +++ b/octopoes/octopoes/api/models.py @@ -1,6 +1,6 @@ import uuid from datetime import datetime -from typing import Any, List, Optional +from typing import Any from pydantic import AwareDatetime, BaseModel, Field @@ -11,9 +11,9 @@ class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) + results: list["ServiceHealth"] = Field(default_factory=list) ServiceHealth.model_rebuild() @@ -22,7 +22,7 @@ class ServiceHealth(BaseModel): class _BaseObservation(BaseModel): method: str source: Reference - result: List[OOIType] + result: list[OOIType] valid_time: AwareDatetime task_id: uuid.UUID @@ -31,7 +31,7 @@ class _BaseObservation(BaseModel): class Observation(_BaseObservation): """Used by Octopoes Connector to describe request body""" - result: List[OOIType] + result: list[OOIType] valid_time: datetime @@ -40,8 +40,8 @@ class Declaration(BaseModel): ooi: OOIType valid_time: datetime - method: Optional[str] = None - task_id: Optional[uuid.UUID] = None + method: str | None = None + task_id: uuid.UUID | None = None class ScanProfileDeclaration(BaseModel): @@ -54,7 +54,7 @@ class ScanProfileDeclaration(BaseModel): class ValidatedObservation(_BaseObservation): """Used by Octopoes API to validate and parse correctly""" - result: List[OOIType] + result: list[OOIType] valid_time: AwareDatetime @@ -63,5 +63,5 @@ class ValidatedDeclaration(BaseModel): ooi: OOIType valid_time: AwareDatetime - method: Optional[str] = "manual" - task_id: Optional[uuid.UUID] = Field(default_factory=lambda: uuid.uuid4()) + method: str | None = "manual" + task_id: uuid.UUID | None = Field(default_factory=lambda: uuid.uuid4()) diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index 7d7a1008b41..188525a46da 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -1,8 +1,8 @@ import uuid from collections import Counter +from collections.abc import Generator from datetime import datetime, timezone from logging import getLogger -from typing import Generator, List, Optional, Set, Type from fastapi import APIRouter, Body, Depends, HTTPException, Path, Query, status from pydantic import AwareDatetime @@ -50,7 +50,7 @@ def extract_client(client: str = Path(...)) -> str: return client -def extract_valid_time(valid_time: Optional[AwareDatetime] = Query(None)) -> datetime: +def extract_valid_time(valid_time: AwareDatetime | None = Query(None)) -> datetime: if valid_time is None: return datetime.now(timezone.utc) return valid_time @@ -60,7 +60,7 @@ def extract_required_valid_time(valid_time: AwareDatetime) -> datetime: return valid_time -def extract_types(types: List[str] = Query(["OOI"])) -> Set[Type[OOI]]: +def extract_types(types: list[str] = Query(["OOI"])) -> set[type[OOI]]: try: return {type_by_name(t) for t in types} except KeyError as e: @@ -71,7 +71,7 @@ def extract_reference(reference: str = Query("")) -> Reference: return Reference.from_str(reference) -def extract_references(references: List[str]) -> List[Reference]: +def extract_references(references: list[str]) -> list[Reference]: return [Reference.from_str(reference) for reference in references] @@ -126,9 +126,9 @@ def health( def list_objects( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - types: Set[Type[OOI]] = Depends(extract_types), - scan_level: Set[ScanLevel] = Query(DEFAULT_SCAN_LEVEL_FILTER), - scan_profile_type: Set[ScanProfileType] = Query(DEFAULT_SCAN_PROFILE_TYPE_FILTER), + types: set[type[OOI]] = Depends(extract_types), + scan_level: set[ScanLevel] = Query(DEFAULT_SCAN_LEVEL_FILTER), + scan_profile_type: set[ScanProfileType] = Query(DEFAULT_SCAN_PROFILE_TYPE_FILTER), offset: int = 0, limit: int = 20, ): @@ -138,7 +138,7 @@ def list_objects( @router.get("/query", tags=["Objects"]) def query( path: str, - source: Optional[Reference] = None, + source: Reference | None = None, octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), offset: int = DEFAULT_OFFSET, @@ -157,7 +157,7 @@ def query( def load_objects_bulk( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - references: Set[Reference] = Depends(extract_references), + references: set[Reference] = Depends(extract_references), ): return octopoes.ooi_repository.load_bulk(references, valid_time) @@ -176,12 +176,12 @@ def get_object_history( reference: Reference = Depends(extract_reference), sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, + limit: int | None = None, + indices: list[int] | None = None, octopoes: OctopoesService = Depends(octopoes_service), -) -> List[TransactionRecord]: +) -> list[TransactionRecord]: return octopoes.get_ooi_history( reference, sort_order=sort_order, @@ -198,7 +198,7 @@ def list_random_objects( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), amount: int = 1, - scan_level: Set[ScanLevel] = Query(DEFAULT_SCAN_LEVEL_FILTER), + scan_level: set[ScanLevel] = Query(DEFAULT_SCAN_LEVEL_FILTER), ): return octopoes.list_random_ooi(valid_time, amount, scan_level) @@ -217,7 +217,7 @@ def delete_object( def delete_many( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - references: List[Reference] = Depends(extract_references), + references: list[Reference] = Depends(extract_references), ) -> None: for reference in references: octopoes.ooi_repository.delete(reference, valid_time) @@ -229,7 +229,7 @@ def delete_many( def get_tree( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - types: Set[Type[OOI]] = Depends(extract_types), + types: set[type[OOI]] = Depends(extract_types), reference: Reference = Depends(extract_reference), depth: int = 1, ) -> ReferenceTree: @@ -245,11 +245,11 @@ def get_tree( def list_origins( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - source: Optional[Reference] = Query(None), - result: Optional[Reference] = Query(None), - task_id: Optional[uuid.UUID] = Query(None), - origin_type: Optional[OriginType] = Query(None), -) -> List[Origin]: + source: Reference | None = Query(None), + result: Reference | None = Query(None), + task_id: uuid.UUID | None = Query(None), + origin_type: OriginType | None = Query(None), +) -> list[Origin]: return octopoes.origin_repository.list_origins( valid_time, task_id=task_id, @@ -263,8 +263,8 @@ def list_origins( def list_origin_parameters( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - origin_id: Set[str] = Query(default=set()), -) -> List[OriginParameter]: + origin_id: set[str] = Query(default=set()), +) -> list[OriginParameter]: return octopoes.origin_parameter_repository.list_by_origin(origin_id, valid_time) @@ -305,8 +305,8 @@ def save_declaration( def list_scan_profiles( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - scan_profile_type: Optional[str] = Query(None), -) -> List[ScanProfileBase]: + scan_profile_type: str | None = Query(None), +) -> list[ScanProfileBase]: return octopoes.scan_profile_repository.list_scan_profiles(scan_profile_type, valid_time) @@ -327,7 +327,7 @@ def save_scan_profile( @router.post("/scan_profiles/save_many", tags=["Scan Profiles"]) def save_many( - scan_profiles: List[ScanProfile], + scan_profiles: list[ScanProfile], octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), ) -> None: @@ -356,7 +356,7 @@ def get_scan_profile_inheritance( octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), reference: Reference = Depends(extract_reference), -) -> List[InheritanceSection]: +) -> list[InheritanceSection]: ooi = octopoes.get_ooi(reference, valid_time) start = InheritanceSection( reference=ooi.reference, level=ooi.scan_profile.level, scan_profile_type=ooi.scan_profile.scan_profile_type @@ -374,7 +374,7 @@ def list_findings( limit=DEFAULT_LIMIT, octopoes: OctopoesService = Depends(octopoes_service), valid_time: datetime = Depends(extract_valid_time), - severities: Set[RiskLevelSeverity] = Query(DEFAULT_SEVERITY_FILTER), + severities: set[RiskLevelSeverity] = Query(DEFAULT_SEVERITY_FILTER), ) -> Paginated[Finding]: return octopoes.ooi_repository.list_findings( severities, diff --git a/octopoes/octopoes/config/settings.py b/octopoes/octopoes/config/settings.py index 5c5857bff07..c8cd2921ff2 100644 --- a/octopoes/octopoes/config/settings.py +++ b/octopoes/octopoes/config/settings.py @@ -3,7 +3,7 @@ import logging import os from pathlib import Path -from typing import Any, Dict, Optional, Set, Tuple, Type +from typing import Any from pydantic import AmqpDsn, AnyHttpUrl, Field, FilePath from pydantic_settings import BaseSettings, EnvSettingsSource, PydanticBaseSettingsSource, SettingsConfigDict @@ -23,8 +23,8 @@ class BackwardsCompatibleEnvSettings(EnvSettingsSource): "LOG_CFG": "OCTOPOES_LOG_CFG", } - def __call__(self) -> Dict[str, Any]: - d: Dict[str, Any] = {} + def __call__(self) -> dict[str, Any]: + d: dict[str, Any] = {} env_vars = {k.lower(): v for k, v in os.environ.items()} env_prefix = self.settings_cls.model_config.get("env_prefix", "").lower() @@ -59,12 +59,12 @@ class Settings(BaseSettings): scan_level_recalculation_interval: int = Field( 60, description="Interval in seconds of the periodic task that recalculates scan levels" ) - bits_enabled: Set[str] = Field(set(), examples=['["port-common"]'], description="Explicitly enabled bits") - bits_disabled: Set[str] = Field( + bits_enabled: set[str] = Field(set(), examples=['["port-common"]'], description="Explicitly enabled bits") + bits_disabled: set[str] = Field( set(), examples=['["port-classification-ip"]'], description="Explicitly disabled bits" ) - span_export_grpc_endpoint: Optional[AnyHttpUrl] = Field( + span_export_grpc_endpoint: AnyHttpUrl | None = Field( None, description="OpenTelemetry endpoint", validation_alias="SPAN_EXPORT_GRPC_ENDPOINT" ) @@ -73,12 +73,12 @@ class Settings(BaseSettings): @classmethod def settings_customise_sources( cls, - settings_cls: Type[BaseSettings], + settings_cls: type[BaseSettings], init_settings: PydanticBaseSettingsSource, env_settings: PydanticBaseSettingsSource, dotenv_settings: PydanticBaseSettingsSource, file_secret_settings: PydanticBaseSettingsSource, - ) -> Tuple[PydanticBaseSettingsSource, ...]: + ) -> tuple[PydanticBaseSettingsSource, ...]: backwards_compatible_settings = BackwardsCompatibleEnvSettings(settings_cls) return env_settings, init_settings, file_secret_settings, backwards_compatible_settings diff --git a/octopoes/octopoes/connector/katalogus.py b/octopoes/octopoes/connector/katalogus.py index 0e3184e7674..9bacdb1634e 100644 --- a/octopoes/octopoes/connector/katalogus.py +++ b/octopoes/octopoes/connector/katalogus.py @@ -1,5 +1,3 @@ -from typing import List - import requests @@ -7,7 +5,7 @@ class KATalogusClientV1: def __init__(self, base_uri: str): self.base_uri = f"{base_uri.rstrip('/')}/v1" - def get_organisations(self) -> List[str]: + def get_organisations(self) -> list[str]: response = requests.get(f"{self.base_uri}/organisations", timeout=30) response.raise_for_status() diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index 991bc9f0ee1..d6dc845d968 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -1,6 +1,5 @@ import json from datetime import datetime -from typing import Dict, List, Optional, Set, Type, Union from uuid import UUID import requests @@ -56,8 +55,8 @@ def _verify_response(response: Response) -> None: def request( self, method: str, - url: Union[str, bytes], - params: Optional[dict] = None, + url: str | bytes, + params: dict | None = None, **kwargs, ) -> requests.Response: response = super().request(method, f"{self._base_uri}{url}", params, **kwargs) @@ -90,12 +89,12 @@ def health(self) -> ServiceHealth: def list_objects( self, - types: Set[Type[OOI]], - valid_time: Optional[datetime] = None, + types: set[type[OOI]], + valid_time: datetime | None = None, offset: int = DEFAULT_OFFSET, limit: int = DEFAULT_LIMIT, - scan_level: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, - scan_profile_type: Set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, + scan_level: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, + scan_profile_type: set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOIType]: params = { "types": [t.__name__ for t in types], @@ -108,7 +107,7 @@ def list_objects( res = self.session.get(f"/{self.client}/objects", params=params) return TypeAdapter(Paginated[OOIType]).validate_json(res.content) - def get(self, reference: Reference, valid_time: Optional[datetime] = None) -> OOI: + def get(self, reference: Reference, valid_time: datetime | None = None) -> OOI: res = self.session.get( f"/{self.client}/object", params={"reference": str(reference), "valid_time": valid_time}, @@ -121,11 +120,11 @@ def get_history( *, sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, - ) -> List[TransactionRecord]: + limit: int | None = None, + indices: list[int] | None = None, + ) -> list[TransactionRecord]: res = self.session.get( f"/{self.client}/object-history", params={ @@ -138,14 +137,14 @@ def get_history( "indices": indices, }, ) - return TypeAdapter(List[TransactionRecord]).validate_json(res.content) + return TypeAdapter(list[TransactionRecord]).validate_json(res.content) def get_tree( self, reference: Reference, - types: Optional[Set] = None, - depth: Optional[int] = 1, - valid_time: Optional[datetime] = None, + types: set | None = None, + depth: int | None = 1, + valid_time: datetime | None = None, ) -> ReferenceTree: if types is None: types = set() @@ -162,12 +161,12 @@ def get_tree( def list_origins( self, - valid_time: Optional[datetime] = None, - source: Optional[Reference] = None, - result: Optional[Reference] = None, - task_id: Optional[UUID] = None, - origin_type: Optional[OriginType] = None, - ) -> List[Origin]: + valid_time: datetime | None = None, + source: Reference | None = None, + result: Reference | None = None, + task_id: UUID | None = None, + origin_type: OriginType | None = None, + ) -> list[Origin]: res = self.session.get( f"/{self.client}/origins", params={ @@ -179,7 +178,7 @@ def list_origins( }, ) - return TypeAdapter(List[Origin]).validate_json(res.content) + return TypeAdapter(list[Origin]).validate_json(res.content) def save_observation(self, observation: Observation) -> None: self.session.post(f"/{self.client}/observations", data=observation.model_dump_json()) @@ -191,7 +190,7 @@ def save_scan_profile(self, scan_profile: ScanProfile, valid_time: datetime): params = {"valid_time": str(valid_time)} self.session.put(f"/{self.client}/scan_profiles", params=params, data=scan_profile.model_dump_json()) - def save_many_scan_profiles(self, scan_profiles: List[ScanProfile], valid_time: Optional[datetime] = None) -> None: + def save_many_scan_profiles(self, scan_profiles: list[ScanProfile], valid_time: datetime | None = None) -> None: params = {"valid_time": valid_time} self.session.post( f"/{self.client}/scan_profiles/save_many", @@ -199,20 +198,18 @@ def save_many_scan_profiles(self, scan_profiles: List[ScanProfile], valid_time: json=[json.loads(scan_profile.model_dump_json()) for scan_profile in scan_profiles], ) - def delete(self, reference: Reference, valid_time: Optional[datetime] = None) -> None: + def delete(self, reference: Reference, valid_time: datetime | None = None) -> None: params = {"reference": str(reference), "valid_time": valid_time} self.session.delete(f"/{self.client}/", params=params) - def delete_many(self, references: List[Reference], valid_time: Optional[datetime] = None) -> None: + def delete_many(self, references: list[Reference], valid_time: datetime | None = None) -> None: params = {"valid_time": valid_time} self.session.post(f"/{self.client}/objects/delete_many", params=params, json=[str(ref) for ref in references]) - def list_origin_parameters( - self, origin_id: Set[str], valid_time: Optional[datetime] = None - ) -> List[OriginParameter]: + def list_origin_parameters(self, origin_id: set[str], valid_time: datetime | None = None) -> list[OriginParameter]: params = {"origin_id": origin_id, "valid_time": valid_time} res = self.session.get(f"/{self.client}/origin_parameters", params=params) - return TypeAdapter(List[OriginParameter]).validate_json(res.content) + return TypeAdapter(list[OriginParameter]).validate_json(res.content) def create_node(self): self.session.post(f"/{self.client}/node") @@ -221,23 +218,23 @@ def delete_node(self): self.session.delete(f"/{self.client}/node") def get_scan_profile_inheritance( - self, reference: Reference, valid_time: Optional[datetime] = None - ) -> List[InheritanceSection]: + self, reference: Reference, valid_time: datetime | None = None + ) -> list[InheritanceSection]: params = {"reference": str(reference), "valid_time": valid_time} res = self.session.get(f"/{self.client}/scan_profiles/inheritance", params=params) - return TypeAdapter(List[InheritanceSection]).validate_json(res.content) + return TypeAdapter(list[InheritanceSection]).validate_json(res.content) - def count_findings_by_severity(self, valid_time: Optional[datetime] = None) -> Dict[str, int]: + def count_findings_by_severity(self, valid_time: datetime | None = None) -> dict[str, int]: params = {"valid_time": valid_time} res = self.session.get(f"/{self.client}/findings/count_by_severity", params=params) return res.json() def list_findings( self, - severities: Set[RiskLevelSeverity], + severities: set[RiskLevelSeverity], exclude_muted: bool = True, only_muted: bool = False, - valid_time: Optional[datetime] = None, + valid_time: datetime | None = None, offset: int = DEFAULT_OFFSET, limit: int = DEFAULT_LIMIT, ) -> Paginated[Finding]: @@ -252,14 +249,14 @@ def list_findings( res = self.session.get(f"/{self.client}/findings", params=params) return TypeAdapter(Paginated[Finding]).validate_json(res.content) - def load_objects_bulk(self, references: Set[Reference], valid_time): + def load_objects_bulk(self, references: set[Reference], valid_time): params = { "valid_time": valid_time, } res = self.session.post( f"/{self.client}/objects/load_bulk", params=params, json=[str(ref) for ref in references] ) - return TypeAdapter(Dict[Reference, OOIType]).validate_json(res.content) + return TypeAdapter(dict[Reference, OOIType]).validate_json(res.content) def recalculate_bits(self) -> int: return self.session.post(f"/{self.client}/bits/recalculate").json() @@ -268,10 +265,10 @@ def query( self, path: str, valid_time: datetime, - source: Optional[Union[Reference, str]] = None, + source: Reference | str | None = None, offset: int = DEFAULT_OFFSET, limit: int = DEFAULT_LIMIT, - ) -> List[OOI]: + ) -> list[OOI]: params = { "path": path, "source": source, diff --git a/octopoes/octopoes/core/service.py b/octopoes/octopoes/core/service.py index c632430c636..1b0211342e2 100644 --- a/octopoes/octopoes/core/service.py +++ b/octopoes/octopoes/core/service.py @@ -1,8 +1,8 @@ import json from collections import Counter +from collections.abc import Callable from datetime import datetime, timezone from logging import getLogger -from typing import Callable, Dict, List, Optional, Set, Type from bits.definitions import get_bit_definitions from bits.runner import BitRunner @@ -52,7 +52,7 @@ settings = Settings() -def find_relation_in_tree(relation: str, tree: ReferenceTree) -> List[OOI]: +def find_relation_in_tree(relation: str, tree: ReferenceTree) -> list[OOI]: parts = relation.split(".") nodes = [tree.root] for part in parts: @@ -77,10 +77,10 @@ def __init__( self.origin_parameter_repository = origin_parameter_repository self.scan_profile_repository = scan_profile_repository - def _populate_scan_profiles(self, oois: List[OOI], valid_time: datetime) -> List[OOI]: + def _populate_scan_profiles(self, oois: list[OOI], valid_time: datetime) -> list[OOI]: logger.debug("Populating scan profiles for %s oois", len(oois)) - ooi_cache: Dict[str, OOI] = {str(ooi.reference): ooi for ooi in oois} + ooi_cache: dict[str, OOI] = {str(ooi.reference): ooi for ooi in oois} scan_profiles = self.scan_profile_repository.get_bulk({x.reference for x in oois}, valid_time) for ooi in oois: ooi.scan_profile = EmptyScanProfile(reference=ooi.reference) @@ -99,11 +99,11 @@ def get_ooi_history( *, sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, - ) -> List[TransactionRecord]: + limit: int | None = None, + indices: list[int] | None = None, + ) -> list[TransactionRecord]: return self.ooi_repository.get_history( reference, sort_order=sort_order, @@ -116,12 +116,12 @@ def get_ooi_history( def list_ooi( self, - types: Set[Type[OOI]], + types: set[type[OOI]], valid_time: datetime, limit: int = DEFAULT_LIMIT, offset: int = DEFAULT_OFFSET, - scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, - scan_profile_types: Set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, + scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, + scan_profile_types: set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOI]: paginated = self.ooi_repository.list_oois(types, valid_time, limit, offset, scan_levels, scan_profile_types) self._populate_scan_profiles(paginated.items, valid_time) @@ -131,8 +131,8 @@ def get_ooi_tree( self, reference: Reference, valid_time: datetime, - search_types: Optional[Set[Type[OOI]]] = None, - depth: Optional[int] = 1, + search_types: set[type[OOI]] | None = None, + depth: int | None = 1, ): tree = self.ooi_repository.get_tree(reference, valid_time, search_types, depth) self._populate_scan_profiles(tree.store.values(), valid_time) @@ -143,7 +143,7 @@ def _delete_ooi(self, reference: Reference, valid_time: datetime) -> None: if not referencing_origins: self.ooi_repository.delete(reference, valid_time) - def save_origin(self, origin: Origin, oois: List[OOI], valid_time: datetime) -> None: + def save_origin(self, origin: Origin, oois: list[OOI], valid_time: datetime) -> None: origin.result = [ooi.reference for ooi in oois] # When an Origin is saved while the source OOI does not exist, reject saving the results @@ -201,7 +201,7 @@ def _run_inference(self, origin: Origin, valid_time: datetime) -> None: self.save_origin(origin, resulting_oois, valid_time) @staticmethod - def check_path_level(path_level: Optional[int], current_level: int): + def check_path_level(path_level: int | None, current_level: int): return path_level is not None and path_level >= current_level def recalculate_scan_profiles(self, valid_time: datetime) -> None: @@ -220,7 +220,7 @@ def recalculate_scan_profiles(self, valid_time: datetime) -> None: } # track all scan level assignments - assigned_scan_levels: Dict[Reference, ScanLevel] = { + assigned_scan_levels: dict[Reference, ScanLevel] = { scan_profile.reference: scan_profile.level for scan_profile in all_declared_scan_profiles } @@ -234,7 +234,7 @@ def recalculate_scan_profiles(self, valid_time: datetime) -> None: while next_ooi_set: # prepare next iteration, group oois per type ooi_types = {ooi.__class__ for ooi in next_ooi_set} - grouped_per_type: Dict[Type[OOI], Set[OOI]] = { + grouped_per_type: dict[type[OOI], set[OOI]] = { ooi_type: {ooi for ooi in next_ooi_set if isinstance(ooi, ooi_type)} for ooi_type in ooi_types } @@ -328,7 +328,7 @@ def recalculate_scan_profiles(self, valid_time: datetime) -> None: def process_event(self, event: DBEvent): # handle event event_handler_name = f"_on_{event.operation_type.value}_{event.entity_type}" - handler: Optional[Callable[[DBEvent], None]] = getattr(self, event_handler_name) + handler: Callable[[DBEvent], None] | None = getattr(self, event_handler_name) if handler is not None: handler(event) @@ -473,22 +473,22 @@ def _on_delete_scan_profile(self, event: ScanProfileDBEvent) -> None: self._run_inferences(event) def list_random_ooi( - self, valid_time: datetime, amount: int = 1, scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER - ) -> List[OOI]: + self, valid_time: datetime, amount: int = 1, scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER + ) -> list[OOI]: oois = self.ooi_repository.list_random(valid_time, amount, scan_levels) self._populate_scan_profiles(oois, valid_time) return oois def get_scan_profile_inheritance( - self, reference: Reference, valid_time: datetime, inheritance_chain: List[InheritanceSection] - ) -> List[InheritanceSection]: + self, reference: Reference, valid_time: datetime, inheritance_chain: list[InheritanceSection] + ) -> list[InheritanceSection]: neighbour_cache = self.ooi_repository.get_neighbours(reference, valid_time) last_inheritance_level = inheritance_chain[-1].level visited = {inheritance.reference for inheritance in inheritance_chain} # load scan profiles for all neighbours - neighbours_: List[OOI] = [ + neighbours_: list[OOI] = [ neighbour for neighbours in neighbour_cache.values() for neighbour in neighbours diff --git a/octopoes/octopoes/events/events.py b/octopoes/octopoes/events/events.py index 4befda60874..60480e1cf7d 100644 --- a/octopoes/octopoes/events/events.py +++ b/octopoes/octopoes/events/events.py @@ -1,9 +1,8 @@ from datetime import datetime from enum import Enum -from typing import Literal, Optional, Union +from typing import Annotated, Literal from pydantic import BaseModel, Field -from typing_extensions import Annotated from octopoes.models import Reference, ScanProfile from octopoes.models.origin import Origin, OriginParameter @@ -20,7 +19,7 @@ class DBEvent(BaseModel): entity_type: str operation_type: OperationType valid_time: datetime - client: Optional[str] = None + client: str | None = None @property def primary_key(self) -> str: @@ -29,8 +28,8 @@ def primary_key(self) -> str: class OOIDBEvent(DBEvent): entity_type: Literal["ooi"] = "ooi" - old_data: Optional[OOIType] = None - new_data: Optional[OOIType] = None + old_data: OOIType | None = None + new_data: OOIType | None = None @property def primary_key(self) -> str: @@ -39,8 +38,8 @@ def primary_key(self) -> str: class OriginDBEvent(DBEvent): entity_type: Literal["origin"] = "origin" - old_data: Optional[Origin] = None - new_data: Optional[Origin] = None + old_data: Origin | None = None + new_data: Origin | None = None @property def primary_key(self) -> str: @@ -49,8 +48,8 @@ def primary_key(self) -> str: class OriginParameterDBEvent(DBEvent): entity_type: Literal["origin_parameter"] = "origin_parameter" - old_data: Optional[OriginParameter] = None - new_data: Optional[OriginParameter] = None + old_data: OriginParameter | None = None + new_data: OriginParameter | None = None @property def primary_key(self) -> str: @@ -60,8 +59,8 @@ def primary_key(self) -> str: class ScanProfileDBEvent(DBEvent): entity_type: Literal["scan_profile"] = "scan_profile" reference: Reference - old_data: Optional[ScanProfile] = None - new_data: Optional[ScanProfile] = None + old_data: ScanProfile | None = None + new_data: ScanProfile | None = None @property def primary_key(self) -> Reference: @@ -69,5 +68,5 @@ def primary_key(self) -> Reference: DBEventType = Annotated[ - Union[OOIDBEvent, OriginDBEvent, OriginParameterDBEvent, ScanProfileDBEvent], Field(discriminator="entity_type") + OOIDBEvent | OriginDBEvent | OriginParameterDBEvent | ScanProfileDBEvent, Field(discriminator="entity_type") ] diff --git a/octopoes/octopoes/events/manager.py b/octopoes/octopoes/events/manager.py index 045e71da56b..cf09350e246 100644 --- a/octopoes/octopoes/events/manager.py +++ b/octopoes/octopoes/events/manager.py @@ -2,7 +2,7 @@ import logging import threading import uuid -from typing import Callable, Optional +from collections.abc import Callable import pika from celery import Celery @@ -25,7 +25,7 @@ class AbstractOOI(BaseModel): class ScanProfileMutation(BaseModel): operation: OperationType primary_key: str - value: Optional[AbstractOOI] = None + value: AbstractOOI | None = None thread_local = threading.local() diff --git a/octopoes/octopoes/models/__init__.py b/octopoes/octopoes/models/__init__.py index 4988bd02947..f0f8ce5c8b7 100644 --- a/octopoes/octopoes/models/__init__.py +++ b/octopoes/octopoes/models/__init__.py @@ -5,13 +5,8 @@ from typing import ( Any, ClassVar, - Dict, - List, Literal, Optional, - Set, - Tuple, - Type, TypeVar, Union, ) @@ -23,7 +18,7 @@ class Reference(str): @classmethod - def parse(cls, ref_str: str) -> Tuple[str, str]: + def parse(cls, ref_str: str) -> tuple[str, str]: object_type, *natural_key_parts = ref_str.split("|") return object_type, "|".join(natural_key_parts) @@ -36,7 +31,7 @@ def natural_key(self) -> str: return self.parse(self)[1] @property - def class_type(self) -> Type[OOI]: + def class_type(self) -> type[OOI]: from octopoes.models.types import type_by_name object_type, natural_key = self.parse(self) @@ -117,17 +112,17 @@ class InheritedScanProfile(ScanProfileBase): scan_profile_type: Literal["inherited"] = ScanProfileType.INHERITED.value -ScanProfile = Union[EmptyScanProfile, InheritedScanProfile, DeclaredScanProfile] +ScanProfile = EmptyScanProfile | InheritedScanProfile | DeclaredScanProfile class OOI(BaseModel, abc.ABC): object_type: Literal["OOI"] - scan_profile: Optional[ScanProfile] = None + scan_profile: ScanProfile | None = None - _natural_key_attrs: List[str] = [] - _reverse_relation_names: Dict[str, str] = {} - _information_value: List[str] = [] + _natural_key_attrs: list[str] = [] + _reverse_relation_names: dict[str, str] = {} + _information_value: list[str] = [] _traversable: ClassVar[bool] = True primary_key: str = "" @@ -143,7 +138,7 @@ def get_object_type(cls) -> str: return cls.__name__ @classmethod - def strict_subclasses(cls) -> List[Type[OOI]]: + def strict_subclasses(cls) -> list[type[OOI]]: """FastAPI creates duplicate class instances when parsing return types.""" return [subclass for subclass in cls.__subclasses__() if subclass.__name__ != cls.__name__] @@ -206,7 +201,7 @@ def get_tokenized_primary_key(cls, natural_key: str): token_tree = build_token_tree(cls) natural_key_parts = natural_key.split("|") - def hydrate(node) -> Union[Dict, str]: + def hydrate(node) -> dict | str: for key, value in node.items(): if isinstance(value, dict): node[key] = hydrate(value) @@ -239,33 +234,33 @@ def format_id_short(id_: str) -> str: class PrimaryKeyToken(RootModel): - root: Dict[str, Union[str, PrimaryKeyToken]] + root: dict[str, str | PrimaryKeyToken] - def __getattr__(self, item) -> Union[str, PrimaryKeyToken]: + def __getattr__(self, item) -> str | PrimaryKeyToken: return self.root[item] - def __getitem__(self, item) -> Union[str, PrimaryKeyToken]: + def __getitem__(self, item) -> str | PrimaryKeyToken: return self.root[item] PrimaryKeyToken.model_rebuild() -def get_leaf_subclasses(cls: Type[OOI]) -> Set[Type[OOI]]: +def get_leaf_subclasses(cls: type[OOI]) -> set[type[OOI]]: if not cls.strict_subclasses(): return {cls} child_sets = [get_leaf_subclasses(child_cls) for child_cls in cls.strict_subclasses()] return set().union(*child_sets) -def build_token_tree(ooi_class: Type[OOI]) -> Dict: +def build_token_tree(ooi_class: type[OOI]) -> dict: tokens = {} for attribute in ooi_class._natural_key_attrs.default: field = ooi_class.model_fields[attribute] value = "" - if field.annotation in (Reference, Optional[Reference]): + if field.annotation in (Reference, Reference | None): from octopoes.models.types import related_object_type related_class = related_object_type(field) diff --git a/octopoes/octopoes/models/explanation.py b/octopoes/octopoes/models/explanation.py index 1a48660f0ce..cd28daceb3c 100644 --- a/octopoes/octopoes/models/explanation.py +++ b/octopoes/octopoes/models/explanation.py @@ -1,5 +1,3 @@ -from typing import Optional - from pydantic import BaseModel, ConfigDict from octopoes.models import Reference, ScanProfileType @@ -8,6 +6,6 @@ class InheritanceSection(BaseModel): reference: Reference level: int - segment: Optional[str] = None + segment: str | None = None scan_profile_type: ScanProfileType model_config = ConfigDict(arbitrary_types_allowed=True) diff --git a/octopoes/octopoes/models/ooi/certificate.py b/octopoes/octopoes/models/ooi/certificate.py index 6b3f74c43e7..8a642616f6f 100644 --- a/octopoes/octopoes/models/ooi/certificate.py +++ b/octopoes/octopoes/models/ooi/certificate.py @@ -2,7 +2,7 @@ from datetime import datetime, timedelta from enum import Enum -from typing import Literal, Optional +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.ooi.dns.zone import Hostname @@ -18,18 +18,18 @@ class AlgorithmType(Enum): class X509Certificate(OOI): object_type: Literal["X509Certificate"] = "X509Certificate" - subject: Optional[str] = None - issuer: Optional[str] = None + subject: str | None = None + issuer: str | None = None valid_from: str valid_until: str - pk_algorithm: Optional[str] = None - pk_size: Optional[int] = None - pk_number: Optional[str] = None - signed_by: Optional[Reference] = ReferenceField( + pk_algorithm: str | None = None + pk_size: int | None = None + pk_number: str | None = None + signed_by: Reference | None = ReferenceField( "X509Certificate", max_issue_scan_level=1, max_inherit_scan_level=0, default=None ) serial_number: str - expires_in: Optional[timedelta] = None + expires_in: timedelta | None = None _natural_key_attrs = ["issuer", "serial_number"] diff --git a/octopoes/octopoes/models/ooi/config.py b/octopoes/octopoes/models/ooi/config.py index 6de3d3ed254..196da96a0a0 100644 --- a/octopoes/octopoes/models/ooi/config.py +++ b/octopoes/octopoes/models/ooi/config.py @@ -1,4 +1,4 @@ -from typing import Dict, Literal +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.persistence import ReferenceField @@ -9,7 +9,7 @@ class Config(OOI): ooi: Reference = ReferenceField(OOI) bit_id: str - config: Dict[str, str] + config: dict[str, str] _natural_key_attrs = ["ooi", "bit_id"] diff --git a/octopoes/octopoes/models/ooi/dns/records.py b/octopoes/octopoes/models/ooi/dns/records.py index bdef68ffba7..9fb835ec602 100644 --- a/octopoes/octopoes/models/ooi/dns/records.py +++ b/octopoes/octopoes/models/ooi/dns/records.py @@ -1,7 +1,7 @@ import abc import hashlib from enum import Enum -from typing import Literal, Optional +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.ooi.dns.zone import Hostname @@ -13,7 +13,7 @@ class DNSRecord(OOI, abc.ABC): hostname: Reference = ReferenceField(Hostname, max_issue_scan_level=0, max_inherit_scan_level=2) dns_record_type: Literal["A", "AAAA", "CAA", "CNAME", "MX", "NS", "PTR", "SOA", "SRV", "TXT"] value: str - ttl: Optional[int] = None # todo: validation + ttl: int | None = None # todo: validation _natural_key_attrs = ["hostname", "value"] _reverse_relation_names = { @@ -56,8 +56,8 @@ class DNSMXRecord(DNSRecord): object_type: Literal["DNSMXRecord"] = "DNSMXRecord" dns_record_type: Literal["MX"] = "MX" - mail_hostname: Optional[Reference] = ReferenceField(Hostname, default=None) - preference: Optional[int] = None + mail_hostname: Reference | None = ReferenceField(Hostname, default=None) + preference: int | None = None _reverse_relation_names = { "hostname": "dns_mx_records", @@ -107,11 +107,11 @@ class DNSSOARecord(DNSRecord): dns_record_type: Literal["SOA"] = "SOA" soa_hostname: Reference = ReferenceField(Hostname) - serial: Optional[int] = None - retry: Optional[int] = None - refresh: Optional[int] = None - expire: Optional[int] = None - minimum: Optional[int] = None + serial: int | None = None + retry: int | None = None + refresh: int | None = None + expire: int | None = None + minimum: int | None = None _reverse_relation_names = { "hostname": "dns_soa_records", @@ -144,7 +144,7 @@ def format_reference_human_readable(cls, reference: Reference) -> str: class DNSPTRRecord(DNSRecord): object_type: Literal["DNSPTRRecord"] = "DNSPTRRecord" dns_record_type: Literal["PTR"] = "PTR" - address: Optional[Reference] = ReferenceField(IPAddress) + address: Reference | None = ReferenceField(IPAddress) _natural_key_attrs = ["hostname", "address"] @@ -177,7 +177,7 @@ class DNSCAARecord(DNSRecord): # https://datatracker.ietf.org/doc/html/rfc8659#name-canonical-presentation-form # An unsigned integer between 0 and 255. - flags: Optional[int] = None + flags: int | None = None # A non-zero-length sequence of ASCII letters and numbers in lowercase. tag: CAATAGS diff --git a/octopoes/octopoes/models/ooi/dns/zone.py b/octopoes/octopoes/models/ooi/dns/zone.py index e37e051c4ba..07c77c06aef 100644 --- a/octopoes/octopoes/models/ooi/dns/zone.py +++ b/octopoes/octopoes/models/ooi/dns/zone.py @@ -1,10 +1,9 @@ from __future__ import annotations import string -from typing import Literal, Optional +from typing import Annotated, Literal from pydantic import StringConstraints, field_validator -from typing_extensions import Annotated from octopoes.models import OOI, Reference from octopoes.models.ooi.network import IPAddress, Network @@ -17,9 +16,7 @@ class DNSZone(OOI): object_type: Literal["DNSZone"] = "DNSZone" hostname: Reference = ReferenceField("Hostname", max_issue_scan_level=2, max_inherit_scan_level=1) - parent: Optional[Reference] = ReferenceField( - "DNSZone", max_issue_scan_level=0, max_inherit_scan_level=1, default=None - ) + parent: Reference | None = ReferenceField("DNSZone", max_issue_scan_level=0, max_inherit_scan_level=1, default=None) _natural_key_attrs = ["hostname"] @@ -36,11 +33,9 @@ class Hostname(OOI): network: Reference = ReferenceField(Network) name: Annotated[str, StringConstraints(to_lower=True)] - dns_zone: Optional[Reference] = ReferenceField( - DNSZone, max_issue_scan_level=1, max_inherit_scan_level=2, default=None - ) + dns_zone: Reference | None = ReferenceField(DNSZone, max_issue_scan_level=1, max_inherit_scan_level=2, default=None) - registered_domain: Optional[Reference] = ReferenceField( + registered_domain: Reference | None = ReferenceField( "Hostname", max_issue_scan_level=1, max_inherit_scan_level=2, default=None ) diff --git a/octopoes/octopoes/models/ooi/email_security.py b/octopoes/octopoes/models/ooi/email_security.py index 51e5c47e6f4..3ffce82dfbf 100644 --- a/octopoes/octopoes/models/ooi/email_security.py +++ b/octopoes/octopoes/models/ooi/email_security.py @@ -1,5 +1,5 @@ import hashlib -from typing import Literal, Optional +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.ooi.dns.records import DNSTXTRecord @@ -11,9 +11,9 @@ class DNSSPFRecord(OOI): object_type: Literal["DNSSPFRecord"] = "DNSSPFRecord" value: str - ttl: Optional[int] = None - all: Optional[str] = None - exp: Optional[str] = None + ttl: int | None = None + all: str | None = None + exp: str | None = None dns_txt_record: Reference = ReferenceField(DNSTXTRecord, max_inherit_scan_level=1) _natural_key_attrs = ["dns_txt_record", "value"] @@ -98,7 +98,7 @@ def format_reference_human_readable(cls, reference: Reference) -> str: class DMARCTXTRecord(OOI): object_type: Literal["DMARCTXTRecord"] = "DMARCTXTRecord" value: str - ttl: Optional[int] + ttl: int | None hostname: Reference = ReferenceField(Hostname) _natural_key_attrs = ["value", "hostname"] diff --git a/octopoes/octopoes/models/ooi/findings.py b/octopoes/octopoes/models/ooi/findings.py index e8adeb42f2d..a8ca1cd6456 100644 --- a/octopoes/octopoes/models/ooi/findings.py +++ b/octopoes/octopoes/models/ooi/findings.py @@ -1,6 +1,6 @@ from enum import Enum from functools import total_ordering -from typing import Literal, Optional +from typing import Literal from pydantic import AnyUrl @@ -34,13 +34,13 @@ def __str__(self): class FindingType(OOI): id: str - description: Optional[str] = None - source: Optional[AnyUrl] = None - impact: Optional[str] = None - recommendation: Optional[str] = None + description: str | None = None + source: AnyUrl | None = None + impact: str | None = None + recommendation: str | None = None - risk_score: Optional[float] = None - risk_severity: Optional[RiskLevelSeverity] = None + risk_score: float | None = None + risk_severity: RiskLevelSeverity | None = None _natural_key_attrs = ["id"] _traversable = False @@ -83,9 +83,9 @@ class Finding(OOI): finding_type: Reference = ReferenceField(FindingType) ooi: Reference = ReferenceField(OOI) - proof: Optional[str] = None - description: Optional[str] = None - reproduce: Optional[str] = None + proof: str | None = None + description: str | None = None + reproduce: str | None = None @property def natural_key(self) -> str: @@ -105,7 +105,7 @@ class MutedFinding(OOI): object_type: Literal["MutedFinding"] = "MutedFinding" finding: Reference = ReferenceField(Finding) - reason: Optional[str] = None + reason: str | None = None _natural_key_attrs = ["finding"] _reverse_relation_names = {"finding": "mutes"} diff --git a/octopoes/octopoes/models/ooi/monitoring.py b/octopoes/octopoes/models/ooi/monitoring.py index b183d3cec9e..4bf49a0eff7 100644 --- a/octopoes/octopoes/models/ooi/monitoring.py +++ b/octopoes/octopoes/models/ooi/monitoring.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Literal +from typing import Any, Literal from octopoes.models import OOI, Reference from octopoes.models.persistence import ReferenceField @@ -19,6 +19,6 @@ class Incident(OOI): event_type: str event_title: str severity: str - meta_data: Dict[str, Any] + meta_data: dict[str, Any] _natural_key_attrs = ["application", "event_id"] diff --git a/octopoes/octopoes/models/ooi/network.py b/octopoes/octopoes/models/ooi/network.py index 26314033f75..c36a8da02ae 100644 --- a/octopoes/octopoes/models/ooi/network.py +++ b/octopoes/octopoes/models/ooi/network.py @@ -2,10 +2,9 @@ from enum import Enum from ipaddress import IPv4Address, IPv6Address -from typing import Literal, Optional, Union +from typing import Annotated, Literal from pydantic import Field -from typing_extensions import Annotated from octopoes.models import OOI, Reference from octopoes.models.persistence import ReferenceField @@ -25,7 +24,7 @@ def format_reference_human_readable(cls, reference: Reference) -> str: class IPAddress(OOI): - address: Union[IPv4Address, IPv6Address] + address: IPv4Address | IPv6Address network: Reference = ReferenceField(Network) _natural_key_attrs = ["network", "address"] @@ -40,7 +39,7 @@ class IPAddressV4(IPAddress): object_type: Literal["IPAddressV4"] = "IPAddressV4" address: IPv4Address - netblock: Optional[Reference] = ReferenceField( + netblock: Reference | None = ReferenceField( "IPV4NetBlock", optional=True, max_issue_scan_level=0, max_inherit_scan_level=4, default=None ) @@ -54,7 +53,7 @@ class IPAddressV6(IPAddress): object_type: Literal["IPAddressV6"] = "IPAddressV6" address: IPv6Address - netblock: Optional[Reference] = ReferenceField( + netblock: Reference | None = ReferenceField( "IPV6NetBlock", optional=True, max_issue_scan_level=0, max_inherit_scan_level=4, default=None ) @@ -84,7 +83,7 @@ class IPPort(OOI): address: Reference = ReferenceField(IPAddress, max_issue_scan_level=0, max_inherit_scan_level=4) protocol: Protocol port: Annotated[int, Field(gt=0, lt=2**16)] - state: Optional[PortState] = None + state: PortState | None = None _natural_key_attrs = ["address", "protocol", "port"] _reverse_relation_names = {"address": "ports"} @@ -100,18 +99,18 @@ class AutonomousSystem(OOI): object_type: Literal["AutonomousSystem"] = "AutonomousSystem" number: str - name: Optional[str] + name: str | None _natural_key_attrs = ["number"] class NetBlock(OOI): network: Reference = ReferenceField(Network) - name: Optional[str] = None - description: Optional[str] = None + name: str | None = None + description: str | None = None - announced_by: Optional[Reference] = ReferenceField(AutonomousSystem, default=None) - parent: Optional[Reference] = ReferenceField("NetBlock", default=None) + announced_by: Reference | None = ReferenceField(AutonomousSystem, default=None) + parent: Reference | None = ReferenceField("NetBlock", default=None) _natural_key_attrs = ["network", "start_ip", "mask"] @@ -128,7 +127,7 @@ def format_reference_human_readable(cls, reference: Reference) -> str: class IPV6NetBlock(NetBlock): object_type: Literal["IPV6NetBlock"] = "IPV6NetBlock" - parent: Optional[Reference] = ReferenceField("IPV6NetBlock", default=None) + parent: Reference | None = ReferenceField("IPV6NetBlock", default=None) start_ip: Reference = ReferenceField(IPAddressV6, max_issue_scan_level=4) mask: Annotated[int, Field(ge=0, lt=128)] @@ -142,7 +141,7 @@ class IPV6NetBlock(NetBlock): class IPV4NetBlock(NetBlock): object_type: Literal["IPV4NetBlock"] = "IPV4NetBlock" - parent: Optional[Reference] = ReferenceField("IPV4NetBlock", default=None) + parent: Reference | None = ReferenceField("IPV4NetBlock", default=None) start_ip: Reference = ReferenceField(IPAddressV4, max_issue_scan_level=4) mask: Annotated[int, Field(ge=0, lt=32)] diff --git a/octopoes/octopoes/models/ooi/reports.py b/octopoes/octopoes/models/ooi/reports.py index 06a1a064e73..b4750cda471 100644 --- a/octopoes/octopoes/models/ooi/reports.py +++ b/octopoes/octopoes/models/ooi/reports.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Literal +from typing import Literal from octopoes.models import OOI, Reference @@ -7,8 +7,8 @@ class ReportData(OOI): object_type: Literal["ReportData"] = "ReportData" organization_code: str organization_name: str - organization_tags: List[str] - data: Dict + organization_tags: list[str] + data: dict _natural_key_attrs = ["organization_code"] diff --git a/octopoes/octopoes/models/ooi/service.py b/octopoes/octopoes/models/ooi/service.py index e426d40cd2f..00778aae27f 100644 --- a/octopoes/octopoes/models/ooi/service.py +++ b/octopoes/octopoes/models/ooi/service.py @@ -1,4 +1,4 @@ -from typing import Dict, Literal +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.ooi.network import IPPort @@ -40,7 +40,7 @@ class TLSCipher(OOI): object_type: Literal["TLSCipher"] = "TLSCipher" ip_service: Reference = ReferenceField(IPService, max_issue_scan_level=0, max_inherit_scan_level=4) - suites: Dict + suites: dict _natural_key_attrs = ["ip_service"] diff --git a/octopoes/octopoes/models/ooi/software.py b/octopoes/octopoes/models/ooi/software.py index 7c04a1b22c5..91a7fbddf47 100644 --- a/octopoes/octopoes/models/ooi/software.py +++ b/octopoes/octopoes/models/ooi/software.py @@ -1,4 +1,4 @@ -from typing import Literal, Optional +from typing import Literal from octopoes.models import OOI, Reference from octopoes.models.persistence import ReferenceField @@ -8,8 +8,8 @@ class Software(OOI): object_type: Literal["Software"] = "Software" name: str - version: Optional[str] = None - cpe: Optional[str] = None + version: str | None = None + cpe: str | None = None _natural_key_attrs = ["name", "version", "cpe"] _information_value = ["name"] diff --git a/octopoes/octopoes/models/ooi/web.py b/octopoes/octopoes/models/ooi/web.py index 883c3cdddb7..81be2c9a1a2 100644 --- a/octopoes/octopoes/models/ooi/web.py +++ b/octopoes/octopoes/models/ooi/web.py @@ -1,6 +1,6 @@ from abc import ABC from enum import Enum -from typing import Dict, Literal, Optional +from typing import Literal from pydantic import AnyUrl @@ -27,7 +27,7 @@ class Website(OOI): ip_service: Reference = ReferenceField(IPService, max_issue_scan_level=0, max_inherit_scan_level=4) hostname: Reference = ReferenceField(Hostname, max_inherit_scan_level=4) - certificate: Optional[Reference] = ReferenceField(X509Certificate, default=None, max_issue_scan_level=1) + certificate: Reference | None = ReferenceField(X509Certificate, default=None, max_issue_scan_level=1) _natural_key_attrs = ["ip_service", "hostname"] @@ -90,7 +90,7 @@ class HTTPResource(OOI): website: Reference = ReferenceField(Website, max_issue_scan_level=0, max_inherit_scan_level=4) web_url: Reference = ReferenceField(WebURL, max_issue_scan_level=1, max_inherit_scan_level=4) - redirects_to: Optional[Reference] = ReferenceField(WebURL, default=None) + redirects_to: Reference | None = ReferenceField(WebURL, default=None) _natural_key_attrs = ["website", "web_url"] @@ -147,7 +147,7 @@ class URL(OOI): network: Reference = ReferenceField(Network) raw: AnyUrl - web_url: Optional[Reference] = ReferenceField(WebURL, max_issue_scan_level=2, default=None) + web_url: Reference | None = ReferenceField(WebURL, max_issue_scan_level=2, default=None) _natural_key_attrs = ["network", "raw"] @@ -212,7 +212,7 @@ class ImageMetadata(OOI): object_type: Literal["ImageMetadata"] = "ImageMetadata" resource: Reference = ReferenceField(HTTPResource, max_issue_scan_level=0, max_inherit_scan_level=4) - image_info: Dict + image_info: dict _natural_key_attrs = ["resource"] _reverse_relation_names = {"resource": "ImageMetaData"} @@ -298,10 +298,10 @@ class SecurityTXT(OOI): website: Reference = ReferenceField("Website", max_issue_scan_level=0, max_inherit_scan_level=4) url: Reference = ReferenceField("URL", max_issue_scan_level=0, max_inherit_scan_level=4) - redirects_to: Optional[Reference] = ReferenceField( + redirects_to: Reference | None = ReferenceField( "SecurityTXT", max_issue_scan_level=2, max_inherit_scan_level=0, default=None ) - security_txt: Optional[str] = None + security_txt: str | None = None _natural_key_attrs = ["website", "url"] _reverse_relation_names = { diff --git a/octopoes/octopoes/models/origin.py b/octopoes/octopoes/models/origin.py index 1a20d4725c5..26026c57c4c 100644 --- a/octopoes/octopoes/models/origin.py +++ b/octopoes/octopoes/models/origin.py @@ -1,5 +1,4 @@ from enum import Enum -from typing import List, Optional, Set from uuid import UUID from pydantic import BaseModel, Field @@ -17,10 +16,10 @@ class Origin(BaseModel): origin_type: OriginType method: str source: Reference - result: Optional[List[Reference]] = Field(default_factory=list) - task_id: Optional[UUID] = None + result: list[Reference] | None = Field(default_factory=list) + task_id: UUID | None = None - def __sub__(self, other) -> Set[Reference]: + def __sub__(self, other) -> set[Reference]: if isinstance(other, Origin): return set(self.result) - set(other.result) else: diff --git a/octopoes/octopoes/models/pagination.py b/octopoes/octopoes/models/pagination.py index 02bae6cd10b..6db1878570a 100644 --- a/octopoes/octopoes/models/pagination.py +++ b/octopoes/octopoes/models/pagination.py @@ -1,4 +1,4 @@ -from typing import Generic, List, TypeVar +from typing import Generic, TypeVar from pydantic import BaseModel @@ -7,4 +7,4 @@ class Paginated(BaseModel, Generic[T]): count: int - items: List[T] + items: list[T] diff --git a/octopoes/octopoes/models/path.py b/octopoes/octopoes/models/path.py index 0580bb74687..be03804ce50 100644 --- a/octopoes/octopoes/models/path.py +++ b/octopoes/octopoes/models/path.py @@ -1,7 +1,6 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Set, Tuple, Type from pyparsing import Literal, Opt, ParseException, Word, alphas @@ -22,10 +21,10 @@ class Direction(Enum): class Segment: def __init__( self, - source_type: Type[OOI], + source_type: type[OOI], direction: Direction, property_name: str, - target_type: Type[OOI], + target_type: type[OOI], ): self.source_type = source_type self.direction = direction @@ -33,7 +32,7 @@ def __init__( self.target_type = target_type @classmethod - def parse_step(cls, step: str) -> Tuple[Direction, str, Optional[Type[OOI]]]: + def parse_step(cls, step: str) -> tuple[Direction, str, type[OOI] | None]: try: parsed_step = incoming_step_grammar.parse_string(step) incoming, property_name, _, _, target_type, _ = parsed_step @@ -49,7 +48,7 @@ def parse_step(cls, step: str) -> Tuple[Direction, str, Optional[Type[OOI]]]: raise ValueError(f"Could not parse step: {step}") @classmethod - def calculate_step(cls, source_type: Type[OOI], step: str): + def calculate_step(cls, source_type: type[OOI], step: str): direction, property_name, explicit_target_type = cls.parse_step(step) target_type = explicit_target_type if explicit_target_type else get_relation(source_type, property_name) return cls(source_type, direction, property_name, target_type) @@ -80,7 +79,7 @@ def __repr__(self): class Path: - def __init__(self, segments: List[Segment]): + def __init__(self, segments: list[Segment]): self.segments = segments @classmethod @@ -114,7 +113,7 @@ def __repr__(self): return str(self) -def get_paths_to_neighours(source_type: Type[OOI]) -> Set[Path]: +def get_paths_to_neighours(source_type: type[OOI]) -> set[Path]: relation_paths = set() for property_name, related_type in get_relations(source_type).items(): relation_paths.add(Path([Segment(source_type, Direction.OUTGOING, property_name, related_type)])) @@ -127,7 +126,7 @@ def get_paths_to_neighours(source_type: Type[OOI]) -> Set[Path]: return relation_paths -def get_max_scan_level_inheritance(segment: Segment) -> Optional[int]: +def get_max_scan_level_inheritance(segment: Segment) -> int | None: if segment.direction == Direction.INCOMING: return segment.target_type.model_fields[segment.property_name].json_schema_extra.get( "max_issue_scan_level", None @@ -138,7 +137,7 @@ def get_max_scan_level_inheritance(segment: Segment) -> Optional[int]: ) -def get_max_scan_level_issuance(segment: Segment) -> Optional[int]: +def get_max_scan_level_issuance(segment: Segment) -> int | None: if segment.direction == Direction.INCOMING: return segment.target_type.model_fields[segment.property_name].json_schema_extra.get( "max_inherit_scan_level", None diff --git a/octopoes/octopoes/models/persistence.py b/octopoes/octopoes/models/persistence.py index 581055ecd5f..d10ff1bf03a 100644 --- a/octopoes/octopoes/models/persistence.py +++ b/octopoes/octopoes/models/persistence.py @@ -1,7 +1,5 @@ from __future__ import annotations -from typing import Optional, Type, Union - from pydantic import Field from pydantic.fields import FieldInfo @@ -9,10 +7,10 @@ def ReferenceField( - object_type: Union[str, Type[OOI]], + object_type: str | type[OOI], *, - max_issue_scan_level: Optional[int] = None, - max_inherit_scan_level: Optional[int] = None, + max_issue_scan_level: int | None = None, + max_inherit_scan_level: int | None = None, **kwargs, ) -> FieldInfo: if not isinstance(object_type, str): diff --git a/octopoes/octopoes/models/transaction.py b/octopoes/octopoes/models/transaction.py index 5c19aa40b42..1fe6c880012 100644 --- a/octopoes/octopoes/models/transaction.py +++ b/octopoes/octopoes/models/transaction.py @@ -1,5 +1,4 @@ from datetime import datetime -from typing import Dict, Optional from pydantic import BaseModel, Field @@ -9,4 +8,4 @@ class TransactionRecord(BaseModel): transaction_id: int = Field(alias="txId") valid_time: datetime = Field(alias="validTime") content_hash: str = Field(alias="contentHash") - document: Optional[Dict] = Field(None, alias="doc") + document: dict | None = Field(None, alias="doc") diff --git a/octopoes/octopoes/models/tree.py b/octopoes/octopoes/models/tree.py index e29a8eb51f0..118918ad1ea 100644 --- a/octopoes/octopoes/models/tree.py +++ b/octopoes/octopoes/models/tree.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Callable, Dict, List, Set +from collections.abc import Callable from pydantic.main import BaseModel @@ -10,7 +10,7 @@ class ReferenceNode(BaseModel): reference: Reference - children: Dict[str, List[ReferenceNode]] + children: dict[str, list[ReferenceNode]] def filter_children(self, filter_fn: Callable[[ReferenceNode], bool]): """ @@ -25,7 +25,7 @@ def filter_children(self, filter_fn: Callable[[ReferenceNode], bool]): return True return filter_fn(self) - def collect_references(self) -> Set[Reference]: + def collect_references(self) -> set[Reference]: child_references = set() for child_name, children in self.children.items(): child_references_ = [child.collect_references() for child in children] @@ -46,4 +46,4 @@ class ReferenceTree(BaseModel): present in the tree, the `store`, for convenience.""" root: ReferenceNode - store: Dict[str, OOIType] + store: dict[str, OOIType] diff --git a/octopoes/octopoes/models/types.py b/octopoes/octopoes/models/types.py index a05a3f68933..0df693c6f3d 100644 --- a/octopoes/octopoes/models/types.py +++ b/octopoes/octopoes/models/types.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import Dict, Iterator, Set, Type, Union +from collections.abc import Iterator from octopoes.models import OOI, Reference from octopoes.models.ooi.certificate import ( @@ -76,101 +76,89 @@ Website, ) -CertificateType = Union[ - X509Certificate, - SubjectAlternativeNameHostname, - SubjectAlternativeNameIP, - SubjectAlternativeNameQualifier, -] -DnsType = Union[DNSZone, Hostname] -DnsRecordType = Union[ - DNSARecord, - DNSAAAARecord, - DNSTXTRecord, - DNSMXRecord, - DNSNSRecord, - DNSPTRRecord, - DNSSOARecord, - DNSCNAMERecord, - DNSCAARecord, - ResolvedHostname, - NXDOMAIN, -] -FindingTypeType = Union[ - FindingType, - ADRFindingType, - KATFindingType, - CVEFindingType, - RetireJSFindingType, - CWEFindingType, - CAPECFindingType, - SnykFindingType, -] -NetworkType = Union[ - Network, - IPAddress, - IPAddressV4, - IPAddressV6, - AutonomousSystem, - IPV4NetBlock, - IPV6NetBlock, - IPPort, -] -ServiceType = Union[Service, IPService, TLSCipher] -SoftwareType = Union[Software, SoftwareInstance] -WebType = Union[ - Website, - URL, - HostnameHTTPURL, - IPAddressHTTPURL, - HTTPResource, - HTTPHeader, - HTTPHeaderURL, - HTTPHeaderHostname, - ImageMetadata, - RESTAPI, - APIDesignRule, - APIDesignRuleResult, - SecurityTXT, -] -EmailSecurityType = Union[ - DNSSPFRecord, - DNSSPFMechanismIP, - DNSSPFMechanismHostname, - DNSSPFMechanismNetBlock, - DMARCTXTRecord, - DKIMExists, - DKIMSelector, - DKIMKey, -] -MonitoringType = Union[Application, Incident] -ConfigType = Union[Config] -ReportsType = Union[ReportData] - -OOIType = Union[ - CertificateType, - DnsType, - DnsRecordType, - NetworkType, - ServiceType, - SoftwareType, - WebType, - DNSSPFMechanismIP, - DNSSPFMechanismHostname, - DNSSPFMechanismNetBlock, - DNSSPFRecord, - MonitoringType, - EmailSecurityType, - Finding, - MutedFinding, - FindingTypeType, - ConfigType, - Question, - ReportsType, -] +CertificateType = ( + X509Certificate | SubjectAlternativeNameHostname | SubjectAlternativeNameIP | SubjectAlternativeNameQualifier +) +DnsType = DNSZone | Hostname +DnsRecordType = ( + DNSARecord + | DNSAAAARecord + | DNSTXTRecord + | DNSMXRecord + | DNSNSRecord + | DNSPTRRecord + | DNSSOARecord + | DNSCNAMERecord + | DNSCAARecord + | ResolvedHostname + | NXDOMAIN +) +FindingTypeType = ( + FindingType + | ADRFindingType + | KATFindingType + | CVEFindingType + | RetireJSFindingType + | CWEFindingType + | CAPECFindingType + | SnykFindingType +) +NetworkType = Network | IPAddress | IPAddressV4 | IPAddressV6 | AutonomousSystem | IPV4NetBlock | IPV6NetBlock | IPPort +ServiceType = Service | IPService | TLSCipher +SoftwareType = Software | SoftwareInstance +WebType = ( + Website + | URL + | HostnameHTTPURL + | IPAddressHTTPURL + | HTTPResource + | HTTPHeader + | HTTPHeaderURL + | HTTPHeaderHostname + | ImageMetadata + | RESTAPI + | APIDesignRule + | APIDesignRuleResult + | SecurityTXT +) +EmailSecurityType = ( + DNSSPFRecord + | DNSSPFMechanismIP + | DNSSPFMechanismHostname + | DNSSPFMechanismNetBlock + | DMARCTXTRecord + | DKIMExists + | DKIMSelector + | DKIMKey +) +MonitoringType = Application | Incident +ConfigType = Config +ReportsType = ReportData + +OOIType = ( + CertificateType + | DnsType + | DnsRecordType + | NetworkType + | ServiceType + | SoftwareType + | WebType + | DNSSPFMechanismIP + | DNSSPFMechanismHostname + | DNSSPFMechanismNetBlock + | DNSSPFRecord + | MonitoringType + | EmailSecurityType + | Finding + | MutedFinding + | FindingTypeType + | ConfigType + | Question + | ReportsType +) -def get_all_types(cls_: Type[OOI]) -> Iterator[Type[OOI]]: +def get_all_types(cls_: type[OOI]) -> Iterator[type[OOI]]: yield cls_ for subclass in cls_.strict_subclasses(): @@ -180,18 +168,18 @@ def get_all_types(cls_: Type[OOI]) -> Iterator[Type[OOI]]: ALL_TYPES = set(get_all_types(OOI)) -def get_abstract_types() -> Set[Type[OOI]]: +def get_abstract_types() -> set[type[OOI]]: return {t for t in ALL_TYPES if t.strict_subclasses()} -def get_concrete_types() -> Set[Type[OOI]]: +def get_concrete_types() -> set[type[OOI]]: return {t for t in ALL_TYPES if not t.strict_subclasses()} -def get_collapsed_types() -> Set[Type[OOI]]: +def get_collapsed_types() -> set[type[OOI]]: abstract_ooi_subtypes = get_abstract_types() - {OOI} - subclasses_of_abstract_ooi: Set[Type[OOI]] = set() + subclasses_of_abstract_ooi: set[type[OOI]] = set() for concrete_type in get_concrete_types(): for abstract_type in abstract_ooi_subtypes: @@ -203,7 +191,7 @@ def get_collapsed_types() -> Set[Type[OOI]]: return abstract_ooi_subtypes.union(non_abstracted_concrete_types) -def to_concrete(object_types: Set[Type[OOI]]) -> Set[Type[OOI]]: +def to_concrete(object_types: set[type[OOI]]) -> set[type[OOI]]: concrete_types = set() for object_type in object_types: if object_type in get_concrete_types(): @@ -218,14 +206,14 @@ def type_by_name(type_name: str): return next(t for t in ALL_TYPES if t.__name__ == type_name) -def related_object_type(field) -> Type[OOI]: - object_type: Union[str, Type[OOI]] = field.json_schema_extra["object_type"] +def related_object_type(field) -> type[OOI]: + object_type: str | type[OOI] = field.json_schema_extra["object_type"] if isinstance(object_type, str): return type_by_name(object_type) return object_type -def get_relations(object_type: Type[OOI]) -> Dict[str, Type[OOI]]: +def get_relations(object_type: type[OOI]) -> dict[str, type[OOI]]: return { name: related_object_type(field) for name, field in object_type.model_fields.items() @@ -234,7 +222,7 @@ def get_relations(object_type: Type[OOI]) -> Dict[str, Type[OOI]]: } -def get_relation(object_type: Type[OOI], property_name: str) -> Type[OOI]: +def get_relation(object_type: type[OOI], property_name: str) -> type[OOI]: return get_relations(object_type)[property_name] diff --git a/octopoes/octopoes/repositories/ooi_repository.py b/octopoes/octopoes/repositories/ooi_repository.py index 45c15068e01..668e6db2954 100644 --- a/octopoes/octopoes/repositories/ooi_repository.py +++ b/octopoes/octopoes/repositories/ooi_repository.py @@ -5,7 +5,7 @@ from collections import Counter from datetime import datetime from http import HTTPStatus -from typing import Any, Dict, List, Optional, Set, Tuple, Type, Union, cast +from typing import Any, cast from bits.definitions import BitDefinition from pydantic import RootModel, TypeAdapter @@ -44,7 +44,7 @@ logger = logging.getLogger(__name__) -def merge_ooi(ooi_new: OOI, ooi_old: OOI) -> Tuple[OOI, bool]: +def merge_ooi(ooi_new: OOI, ooi_old: OOI) -> tuple[OOI, bool]: data_old = ooi_old.dict() data_new = ooi_new.dict() @@ -74,41 +74,41 @@ def get_history( *, sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, - ) -> List[TransactionRecord]: + limit: int | None = None, + indices: list[int] | None = None, + ) -> list[TransactionRecord]: raise NotImplementedError - def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[str, OOI]: + def load_bulk(self, references: set[Reference], valid_time: datetime) -> dict[str, OOI]: raise NotImplementedError def get_neighbours( - self, reference: Reference, valid_time: datetime, paths: Optional[Set[Path]] = None - ) -> Dict[Path, List[OOI]]: + self, reference: Reference, valid_time: datetime, paths: set[Path] | None = None + ) -> dict[Path, list[OOI]]: raise NotImplementedError def list_oois( self, - types: Set[Type[OOI]], + types: set[type[OOI]], valid_time: datetime, offset: int = 0, limit: int = 20, - scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, - scan_profile_types: Set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, + scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, + scan_profile_types: set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOI]: raise NotImplementedError def list_random( - self, valid_time: datetime, amount: int = 1, scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER - ) -> List[OOI]: + self, valid_time: datetime, amount: int = 1, scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER + ) -> list[OOI]: raise NotImplementedError - def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_time: datetime) -> Set[OOI]: + def list_neighbours(self, references: set[Reference], paths: set[Path], valid_time: datetime) -> set[OOI]: raise NotImplementedError - def save(self, ooi: OOI, valid_time: datetime, end_valid_time: Optional[datetime] = None) -> None: + def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetime | None = None) -> None: raise NotImplementedError def delete(self, reference: Reference, valid_time: datetime) -> None: @@ -118,12 +118,12 @@ def get_tree( self, reference: Reference, valid_time: datetime, - search_types: Optional[Set[Type[OOI]]] = None, - depth: Optional[int] = 1, + search_types: set[type[OOI]] | None = None, + depth: int | None = 1, ) -> ReferenceTree: raise NotImplementedError - def list_oois_without_scan_profile(self, valid_time: datetime) -> Set[Reference]: + def list_oois_without_scan_profile(self, valid_time: datetime) -> set[Reference]: raise NotImplementedError def count_findings_by_severity(self, valid_time: datetime) -> Counter: @@ -139,20 +139,20 @@ def list_findings( ) -> Paginated[Finding]: raise NotImplementedError - def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, valid_time: datetime) -> List[Config]: + def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, valid_time: datetime) -> list[Config]: raise NotImplementedError - def list_related(self, ooi: OOI, path: Path, valid_time: datetime) -> List[OOI]: + def list_related(self, ooi: OOI, path: Path, valid_time: datetime) -> list[OOI]: raise NotImplementedError - def query(self, query: Query, valid_time: datetime) -> List[OOI]: + def query(self, query: Query, valid_time: datetime) -> list[OOI]: raise NotImplementedError class XTDBReferenceNode(RootModel): - root: Dict[str, Union[str, List[XTDBReferenceNode], XTDBReferenceNode]] + root: dict[str, str | list[XTDBReferenceNode] | XTDBReferenceNode] - def to_reference_node(self, pk_prefix: str) -> Optional[ReferenceNode]: + def to_reference_node(self, pk_prefix: str) -> ReferenceNode | None: if not self.root: return None # Apparently relations can be joined to Null values..?!? @@ -163,7 +163,7 @@ def to_reference_node(self, pk_prefix: str) -> Optional[ReferenceNode]: for name, value in self.root.items(): if isinstance(value, XTDBReferenceNode): sub_nodes = [value.to_reference_node(pk_prefix)] - elif isinstance(value, (List, Set)): + elif isinstance(value, list | set): sub_nodes = [val_.to_reference_node(pk_prefix) for val_ in value] sub_nodes = [node for node in sub_nodes if node is not None] if sub_nodes: @@ -200,7 +200,7 @@ def commit(self): self.session.commit() @classmethod - def serialize(cls, ooi: OOI) -> Dict[str, Any]: + def serialize(cls, ooi: OOI) -> dict[str, Any]: # export model with pydantic serializers export = json.loads(ooi.json()) @@ -214,7 +214,7 @@ def serialize(cls, ooi: OOI) -> Dict[str, Any]: return export @classmethod - def deserialize(cls, data: Dict[str, Any]) -> OOI: + def deserialize(cls, data: dict[str, Any]) -> OOI: if "object_type" not in data: raise ValueError("Data is missing object_type") @@ -240,11 +240,11 @@ def get_history( *, sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, - ) -> List[TransactionRecord]: + limit: int | None = None, + indices: list[int] | None = None, + ) -> list[TransactionRecord]: try: return self.session.client.get_entity_history( str(reference), @@ -259,7 +259,7 @@ def get_history( if e.response.status_code == HTTPStatus.NOT_FOUND: raise ObjectNotFoundException(str(reference)) - def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[str, OOI]: + def load_bulk(self, references: set[Reference], valid_time: datetime) -> dict[str, OOI]: ids = list(map(str, references)) query = generate_pull_query(FieldSet.ALL_FIELDS, {self.pk_prefix: ids}) res = self.session.client.query(query, valid_time) @@ -268,12 +268,12 @@ def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[st def list_oois( self, - types: Set[Type[OOI]], + types: set[type[OOI]], valid_time: datetime, offset: int = 0, limit: int = 20, - scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, - scan_profile_types: Set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, + scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, + scan_profile_types: set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOI]: types = to_concrete(types) @@ -330,8 +330,8 @@ def list_oois( ) def list_random( - self, valid_time: datetime, amount: int = 1, scan_levels: Set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER - ) -> List[OOI]: + self, valid_time: datetime, amount: int = 1, scan_levels: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER + ) -> list[OOI]: query = """ {{ :query {{ @@ -362,8 +362,8 @@ def get_tree( self, reference: Reference, valid_time: datetime, - search_types: Optional[Set[Type[OOI]]] = None, - depth: Optional[int] = 1, + search_types: set[type[OOI]] | None = None, + depth: int | None = 1, ) -> ReferenceTree: if search_types is None: search_types = {OOI} @@ -381,7 +381,7 @@ def get_tree( store = self.load_bulk(reference_node.collect_references(), valid_time) return ReferenceTree(root=reference_node, store=store) - def _get_related_objects(self, references: Set[Reference], valid_time: Optional[datetime]) -> List[ReferenceNode]: + def _get_related_objects(self, references: set[Reference], valid_time: datetime | None) -> list[ReferenceNode]: """ Returns a Reference node for each reference, containing the 1-depth related objects """ @@ -395,16 +395,16 @@ def _get_related_objects(self, references: Set[Reference], valid_time: Optional[ query = generate_pull_query(FieldSet.ONLY_ID, {self.pk_prefix: ooi_ids}, field_node=field_node) res = self.session.client.query(query, valid_time=valid_time) res = [element[0] for element in res] - xtdb_reference_root_nodes = TypeAdapter(List[XTDBReferenceNode]).validate_python(res) + xtdb_reference_root_nodes = TypeAdapter(list[XTDBReferenceNode]).validate_python(res) return [x.to_reference_node(self.pk_prefix) for x in xtdb_reference_root_nodes] def _get_tree_level( self, - references: Set[Reference], - depth: Optional[int] = 1, - exclude: Optional[Set[Reference]] = None, - valid_time: Optional[datetime] = None, - ) -> List[ReferenceNode]: + references: set[Reference], + depth: int | None = 1, + exclude: set[Reference] | None = None, + valid_time: datetime | None = None, + ) -> list[ReferenceNode]: if depth == 0 or not references: return [] @@ -422,7 +422,7 @@ def _get_tree_level( return reference_nodes # Next depth = children except non-traversable - deeper_references: Set[Reference] = set() + deeper_references: set[Reference] = set() for reference_node in reference_nodes: for child_nodes in reference_node.children.values(): deeper_references.update([child.reference for child in child_nodes]) @@ -465,7 +465,7 @@ def decode_segment(cls, encoded_segment: str) -> Segment: return Segment(relation_owner_type, direction, property_name, target_relation) @classmethod - def construct_neighbour_query(cls, reference: Reference, paths: Optional[Set[Path]] = None) -> str: + def construct_neighbour_query(cls, reference: Reference, paths: set[Path] | None = None) -> str: if paths is None: paths = get_paths_to_neighours(reference.class_type) @@ -491,7 +491,7 @@ def construct_neighbour_query(cls, reference: Reference, paths: Optional[Set[Pat return query @classmethod - def construct_neighbour_query_multi(cls, references: Set[Reference], paths: Set[Path]) -> str: + def construct_neighbour_query_multi(cls, references: set[Reference], paths: set[Path]) -> str: encoded_segments = [cls.encode_segment(path.segments[0]) for path in sorted(paths)] segment_query_sections = [f"{{:{s} [*]}}" for s in encoded_segments] @@ -514,8 +514,8 @@ def construct_neighbour_query_multi(cls, references: Set[Reference], paths: Set[ return query def get_neighbours( - self, reference: Reference, valid_time: datetime, paths: Set[Path] = None - ) -> Dict[Path, List[OOI]]: + self, reference: Reference, valid_time: datetime, paths: set[Path] = None + ) -> dict[Path, list[OOI]]: query = self.construct_neighbour_query(reference, paths) response = self.session.client.query(query, valid_time=valid_time) @@ -537,7 +537,7 @@ def get_neighbours( return ret - def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_time: datetime) -> Set[OOI]: + def list_neighbours(self, references: set[Reference], paths: set[Path], valid_time: datetime) -> set[OOI]: query = self.construct_neighbour_query_multi(references, paths) response = self.session.client.query(query, valid_time=valid_time) @@ -561,7 +561,7 @@ def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_ti return neighbours - def save(self, ooi: OOI, valid_time: datetime, end_valid_time: Optional[datetime] = None) -> None: + def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetime | None = None) -> None: # retrieve old ooi try: old_ooi = self.get(ooi.reference, valid_time=valid_time) @@ -607,7 +607,7 @@ def delete(self, reference: Reference, valid_time: datetime) -> None: ) self.session.listen_post_commit(lambda: self.event_manager.publish(event)) - def list_oois_without_scan_profile(self, valid_time: datetime) -> Set[Reference]: + def list_oois_without_scan_profile(self, valid_time: datetime) -> set[Reference]: query = """ {:query { :find [?ooi] @@ -645,7 +645,7 @@ def count_findings_by_severity(self, valid_time: datetime) -> Counter: severity_counts.update([severity] * finding_count) return severity_counts - def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, valid_time: datetime) -> List[Config]: + def get_bit_configs(self, source: OOI, bit_definition: BitDefinition, valid_time: datetime) -> list[Config]: path = Path.parse(f"{bit_definition.config_ooi_relation_path}. List[OOI]: + def list_related(self, ooi: OOI, path: Path, valid_time: datetime) -> list[OOI]: path_start_alias = path.segments[0].source_type query = Query.from_path(path).where(path_start_alias, primary_key=ooi.primary_key) @@ -666,12 +666,12 @@ def list_related(self, ooi: OOI, path: Path, valid_time: datetime) -> List[OOI]: def list_findings( self, - severities: Set[RiskLevelSeverity], + severities: set[RiskLevelSeverity], exclude_muted=False, only_muted=False, offset=DEFAULT_OFFSET, limit=DEFAULT_LIMIT, - valid_time: Optional[datetime] = None, + valid_time: datetime | None = None, ) -> Paginated[Finding]: # clause to find risk_severity concrete_finding_types = to_concrete({FindingType}) @@ -742,5 +742,5 @@ def list_findings( items=findings, ) - def query(self, query: Query, valid_time: datetime) -> List[OOI]: + def query(self, query: Query, valid_time: datetime) -> list[OOI]: return [self.deserialize(row[0]) for row in self.session.client.query(query, valid_time=valid_time)] diff --git a/octopoes/octopoes/repositories/origin_parameter_repository.py b/octopoes/octopoes/repositories/origin_parameter_repository.py index f36853586ab..13d5c3719d9 100644 --- a/octopoes/octopoes/repositories/origin_parameter_repository.py +++ b/octopoes/octopoes/repositories/origin_parameter_repository.py @@ -1,7 +1,7 @@ from datetime import datetime from http import HTTPStatus from logging import getLogger -from typing import Any, Dict, List, Set +from typing import Any from requests import HTTPError @@ -32,10 +32,10 @@ def save(self, origin_parameter: OriginParameter, valid_time: datetime) -> None: def delete(self, origin_parameter: OriginParameter, valid_time: datetime) -> None: raise NotImplementedError - def list_by_origin(self, origin_id: Set[str], valid_time: datetime) -> List[OriginParameter]: + def list_by_origin(self, origin_id: set[str], valid_time: datetime) -> list[OriginParameter]: raise NotImplementedError - def list_by_reference(self, reference: Reference, valid_time: datetime) -> List[OriginParameter]: + def list_by_reference(self, reference: Reference, valid_time: datetime) -> list[OriginParameter]: raise NotImplementedError @@ -50,14 +50,14 @@ def commit(self): self.session.commit() @classmethod - def serialize(cls, origin_parameter: OriginParameter) -> Dict[str, Any]: + def serialize(cls, origin_parameter: OriginParameter) -> dict[str, Any]: data = origin_parameter.dict() data[cls.pk_prefix] = origin_parameter.id data["type"] = origin_parameter.__class__.__name__ return data @classmethod - def deserialize(cls, data: Dict[str, Any]) -> OriginParameter: + def deserialize(cls, data: dict[str, Any]) -> OriginParameter: return OriginParameter.parse_obj(data) def get(self, origin_parameter_id: str, valid_time: datetime) -> OriginParameter: @@ -69,7 +69,7 @@ def get(self, origin_parameter_id: str, valid_time: datetime) -> OriginParameter else: raise e - def list_by_origin(self, origin_id: Set[str], valid_time: datetime) -> List[OriginParameter]: + def list_by_origin(self, origin_id: set[str], valid_time: datetime) -> list[OriginParameter]: query = generate_pull_query( FieldSet.ALL_FIELDS, { diff --git a/octopoes/octopoes/repositories/origin_repository.py b/octopoes/octopoes/repositories/origin_repository.py index dda58b6c981..109ef4ab925 100644 --- a/octopoes/octopoes/repositories/origin_repository.py +++ b/octopoes/octopoes/repositories/origin_repository.py @@ -1,7 +1,7 @@ from datetime import datetime from http import HTTPStatus from logging import getLogger -from typing import Any, Dict, List, Optional +from typing import Any from uuid import UUID from requests import HTTPError @@ -34,11 +34,11 @@ def list_origins( self, valid_time: datetime, *, - task_id: Optional[UUID] = None, - source: Optional[Reference] = None, - result: Optional[Reference] = None, - origin_type: Optional[OriginType] = None, - ) -> List[Origin]: + task_id: UUID | None = None, + source: Reference | None = None, + result: Reference | None = None, + origin_type: OriginType | None = None, + ) -> list[Origin]: raise NotImplementedError def delete(self, origin: Origin, valid_time: datetime) -> None: @@ -56,25 +56,25 @@ def commit(self): self.session.commit() @classmethod - def serialize(cls, origin: Origin) -> Dict[str, Any]: + def serialize(cls, origin: Origin) -> dict[str, Any]: data = origin.dict() data[cls.pk_prefix] = origin.id data["type"] = origin.__class__.__name__ return data @classmethod - def deserialize(cls, data: Dict[str, Any]) -> Origin: + def deserialize(cls, data: dict[str, Any]) -> Origin: return Origin.parse_obj(data) def list_origins( self, valid_time: datetime, *, - task_id: Optional[UUID] = None, - source: Optional[Reference] = None, - result: Optional[Reference] = None, - origin_type: Optional[OriginType] = None, - ) -> List[Origin]: + task_id: UUID | None = None, + source: Reference | None = None, + result: Reference | None = None, + origin_type: OriginType | None = None, + ) -> list[Origin]: where_parameters = {"type": Origin.__name__} if task_id: diff --git a/octopoes/octopoes/repositories/scan_profile_repository.py b/octopoes/octopoes/repositories/scan_profile_repository.py index 70d2474326f..7ed63b4d9e5 100644 --- a/octopoes/octopoes/repositories/scan_profile_repository.py +++ b/octopoes/octopoes/repositories/scan_profile_repository.py @@ -1,7 +1,7 @@ from datetime import datetime from http import HTTPStatus from logging import getLogger -from typing import Any, Dict, List, Optional, Set +from typing import Any from pydantic import parse_obj_as from requests import HTTPError @@ -31,17 +31,17 @@ def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanProfileBase raise NotImplementedError def save( - self, old_scan_profile: Optional[ScanProfileBase], new_scan_profile: ScanProfileBase, valid_time: datetime + self, old_scan_profile: ScanProfileBase | None, new_scan_profile: ScanProfileBase, valid_time: datetime ) -> None: raise NotImplementedError - def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: str | None, valid_time: datetime) -> list[ScanProfileBase]: raise NotImplementedError def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) -> None: raise NotImplementedError - def get_bulk(self, references: Set[Reference], valid_time: datetime) -> List[ScanProfileBase]: + def get_bulk(self, references: set[Reference], valid_time: datetime) -> list[ScanProfileBase]: raise NotImplementedError @@ -61,17 +61,17 @@ def format_id(cls, ooi_reference: Reference): return f"{cls.object_type}|{ooi_reference}" @classmethod - def serialize(cls, scan_profile: ScanProfile) -> Dict[str, Any]: + def serialize(cls, scan_profile: ScanProfile) -> dict[str, Any]: data = scan_profile.dict() data[cls.pk_prefix] = cls.format_id(scan_profile.reference) data["type"] = cls.object_type return data @classmethod - def deserialize(cls, data: Dict[str, Any]) -> ScanProfileBase: + def deserialize(cls, data: dict[str, Any]) -> ScanProfileBase: return parse_obj_as(ScanProfile, data) - def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: str | None, valid_time: datetime) -> list[ScanProfileBase]: where = {"type": self.object_type} if scan_profile_type is not None: where["scan_profile_type"] = scan_profile_type @@ -93,7 +93,7 @@ def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanProfileBase raise e def save( - self, old_scan_profile: Optional[ScanProfileBase], new_scan_profile: ScanProfileBase, valid_time: datetime + self, old_scan_profile: ScanProfileBase | None, new_scan_profile: ScanProfileBase, valid_time: datetime ) -> None: if old_scan_profile == new_scan_profile: return @@ -119,7 +119,7 @@ def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) -> None: ) self.session.listen_post_commit(lambda: self.event_manager.publish(event)) - def get_bulk(self, references: Set[Reference], valid_time: datetime) -> List[ScanProfileBase]: + def get_bulk(self, references: set[Reference], valid_time: datetime) -> list[ScanProfileBase]: ids = list(map(str, references)) query = generate_pull_query(FieldSet.ALL_FIELDS, {"type": self.object_type, "reference": ids}) res = self.session.client.query(query, valid_time) diff --git a/octopoes/octopoes/tasks/tasks.py b/octopoes/octopoes/tasks/tasks.py index 8ac4d70ae92..78c8845725f 100644 --- a/octopoes/octopoes/tasks/tasks.py +++ b/octopoes/octopoes/tasks/tasks.py @@ -3,7 +3,6 @@ from datetime import datetime, timezone from logging import config, getLogger from pathlib import Path -from typing import Dict import yaml from celery.signals import worker_process_init, worker_process_shutdown @@ -45,7 +44,7 @@ def init_worker(**kwargs): @app.task(queue=QUEUE_NAME_OCTOPOES) -def handle_event(event: Dict): +def handle_event(event: dict): try: parsed_event: DBEvent = TypeAdapter(DBEventType).validate_python(event) diff --git a/octopoes/octopoes/xtdb/__init__.py b/octopoes/octopoes/xtdb/__init__.py index 5d03f89e42d..621c199519f 100644 --- a/octopoes/octopoes/xtdb/__init__.py +++ b/octopoes/octopoes/xtdb/__init__.py @@ -1,12 +1,11 @@ from __future__ import annotations from enum import Enum -from typing import Dict, List, Set from pydantic import BaseModel # E.g. {'IPPort': {'address': ['IPAddressV6', 'IPAddressV4'] }, ...} -DataModel = Dict[str, Dict[str, Set[str]]] +DataModel = dict[str, dict[str, set[str]]] class FieldSet(Enum): @@ -17,9 +16,9 @@ class FieldSet(Enum): class ForeignKey(BaseModel): source_entity: str attr_name: str - related_entities: Set[str] + related_entities: set[str] reverse_name: str class Datamodel(BaseModel): - entities: Dict[str, List[ForeignKey]] + entities: dict[str, list[ForeignKey]] diff --git a/octopoes/octopoes/xtdb/client.py b/octopoes/octopoes/xtdb/client.py index 719203f62bb..dd2ce2cc9dc 100644 --- a/octopoes/octopoes/xtdb/client.py +++ b/octopoes/octopoes/xtdb/client.py @@ -1,9 +1,10 @@ import logging +from collections.abc import Callable from datetime import datetime, timezone from enum import Enum from functools import lru_cache from http import HTTPStatus -from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union +from typing import Any import requests from pydantic import BaseModel, ConfigDict, Field, TypeAdapter @@ -24,11 +25,11 @@ class OperationType(Enum): FN = "fn" -Operation = Tuple[OperationType, Union[str, Dict[str, Any]], Optional[datetime]] +Operation = tuple[OperationType, str | dict[str, Any], datetime | None] class Transaction(BaseModel): - operations: List[Operation] = Field(alias="tx-ops") + operations: list[Operation] = Field(alias="tx-ops") model_config = ConfigDict(populate_by_name=True) @@ -39,18 +40,18 @@ def __init__(self, base_url: str): self._base_url = base_url self.headers["Accept"] = "application/json" - def request(self, method: str, url: Union[str, bytes], **kwargs) -> requests.Response: + def request(self, method: str, url: str | bytes, **kwargs) -> requests.Response: return super().request(method, self._base_url + str(url), **kwargs) class XTDBStatus(BaseModel): - version: Optional[str] = None - revision: Optional[str] = None - indexVersion: Optional[int] = None - consumerState: Optional[str] = None - kvStore: Optional[str] = None - estimateNumKeys: Optional[int] = None - size: Optional[int] = None + version: str | None = None + revision: str | None = None + indexVersion: int | None = None + consumerState: str | None = None + kvStore: str | None = None + estimateNumKeys: int | None = None + size: int | None = None @lru_cache(maxsize=1) @@ -82,7 +83,7 @@ def status(self) -> XTDBStatus: self._verify_response(res) return XTDBStatus.model_validate_json(res.content) - def get_entity(self, entity_id: str, valid_time: Optional[datetime] = None) -> dict: + def get_entity(self, entity_id: str, valid_time: datetime | None = None) -> dict: if valid_time is None: valid_time = datetime.now(timezone.utc) res = self._session.get( @@ -97,11 +98,11 @@ def get_entity_history( *, sort_order: str = "asc", # Or: "desc" with_docs: bool = False, - has_doc: Optional[bool] = None, + has_doc: bool | None = None, offset: int = 0, - limit: Optional[int] = None, - indices: Optional[List[int]] = None, - ) -> List[TransactionRecord]: + limit: int | None = None, + indices: list[int] | None = None, + ) -> list[TransactionRecord]: params = { "eid": entity_id, "sort-order": sort_order, @@ -111,7 +112,7 @@ def get_entity_history( res = self._session.get(f"{self.client_url()}/entity", params=params) self._verify_response(res) - transactions: List[TransactionRecord] = TypeAdapter(List[TransactionRecord]).validate_json(res.content) + transactions: list[TransactionRecord] = TypeAdapter(list[TransactionRecord]).validate_json(res.content) if has_doc is True: # The doc is None if and only if the hash is "0000000000000000000000000000000000000000" transactions = [transaction for transaction in transactions if transaction.content_hash != 40 * "0"] @@ -124,7 +125,7 @@ def get_entity_history( return transactions[offset:limit] - def query(self, query: Union[str, Query], valid_time: Optional[datetime] = None) -> List[List[Any]]: + def query(self, query: str | Query, valid_time: datetime | None = None) -> list[list[Any]]: if valid_time is None: valid_time = datetime.now(timezone.utc) res = self._session.post( @@ -140,7 +141,7 @@ def await_transaction(self, transaction_id: int) -> None: self._session.get(f"{self.client_url()}/await-tx", params={"txId": transaction_id}) logger.info("Transaction completed [txId=%s]", transaction_id) - def submit_transaction(self, operations: List[Operation]) -> None: + def submit_transaction(self, operations: list[Operation]) -> None: res = self._session.post( f"{self.client_url()}/submit-tx", data=Transaction(operations=operations).json(by_alias=True), @@ -170,7 +171,7 @@ def delete_node(self) -> None: raise XTDBException("Could not delete node") from e - def sync(self, timeout: Optional[int] = None): + def sync(self, timeout: int | None = None): params = {} if timeout is not None: @@ -192,13 +193,13 @@ def __init__(self, client: XTDBHTTPClient): def __enter__(self): return self - def __exit__(self, _exc_type: Type[Exception], _exc_value: str, _exc_traceback: str) -> None: + def __exit__(self, _exc_type: type[Exception], _exc_value: str, _exc_traceback: str) -> None: self.commit() def add(self, operation: Operation): self._operations.append(operation) - def put(self, document: Union[str, Dict[str, Any]], valid_time: datetime): + def put(self, document: str | dict[str, Any], valid_time: datetime): self.add((OperationType.PUT, document, valid_time)) def commit(self) -> None: diff --git a/octopoes/octopoes/xtdb/query.py b/octopoes/octopoes/xtdb/query.py index 5c3400e8c7a..1253b5e4410 100644 --- a/octopoes/octopoes/xtdb/query.py +++ b/octopoes/octopoes/xtdb/query.py @@ -1,5 +1,4 @@ from dataclasses import dataclass, field -from typing import Dict, List, Optional, Set, Type, Union from uuid import UUID, uuid4 from octopoes.models import OOI @@ -36,14 +35,14 @@ class Aliased: we will get the DNSAAAARecords of the Hostname of the name server of "test.com". """ - type: Type[OOI] + type: type[OOI] # The lambda makes it possible to mock the factory more easily, see: # https://stackoverflow.com/questions/61257658/python-dataclasses-mocking-the-default-factory-in-a-frozen-dataclass alias: UUID = field(default_factory=lambda: uuid4()) -Ref = Union[Type[OOI], Aliased] +Ref = type[OOI] | Aliased A = Aliased @@ -68,10 +67,10 @@ class Query: result_type: Ref - _where_clauses: List[str] = field(default_factory=list) - _find_clauses: List[str] = field(default_factory=list) - _limit: Optional[int] = None - _offset: Optional[int] = None + _where_clauses: list[str] = field(default_factory=list) + _find_clauses: list[str] = field(default_factory=list) + _limit: int | None = None + _offset: int | None = None def where(self, ooi_type: Ref, **kwargs) -> "Query": for field_name, value in kwargs.items(): @@ -94,7 +93,7 @@ def from_path(cls, path: Path) -> "Query": ooi_type = path.segments[-1].target_type query = cls(ooi_type) target_ref = None - alias_map: Dict[str, Ref] = {} + alias_map: dict[str, Ref] = {} for segment in path.segments: source_ref = alias_map.get(segment.source_type.get_object_type(), segment.source_type) @@ -139,7 +138,7 @@ def offset(self, offset: int) -> "Query": return self - def _where_field_is(self, ref: Ref, field_name: str, value: Union[Ref, str, Set[str]]) -> None: + def _where_field_is(self, ref: Ref, field_name: str, value: Ref | str | set[str]) -> None: ooi_type = ref.type if isinstance(ref, Aliased) else ref if field_name not in ooi_type.model_fields: @@ -171,7 +170,7 @@ def _where_field_is(self, ref: Ref, field_name: str, value: Union[Ref, str, Set[ self._add_where_statement(ref, field_name, f'"{value}"') return - if not isinstance(value, (type, Aliased)): + if not isinstance(value, type | Aliased): raise InvalidField(f"value '{value}' should be a string or an OOI Type") if not isinstance(value, Aliased) and not issubclass(value, OOI): @@ -208,7 +207,7 @@ def _add_or_statement(self, ref: Ref, field_name: str, to_alias: str) -> None: ) ) - def _or_statement(self, from_alias: str, concrete_types: List[Type[OOI]], field_name: str, to_alias: str) -> str: + def _or_statement(self, from_alias: str, concrete_types: list[type[OOI]], field_name: str, to_alias: str) -> str: relationships = [ self._relationship(from_alias, concrete_type.get_object_type(), field_name, to_alias) for concrete_type in concrete_types @@ -219,14 +218,14 @@ def _or_statement(self, from_alias: str, concrete_types: List[Type[OOI]], field_ def _relationship(self, from_alias: str, field_type: str, field_name: str, to_alias: str) -> str: return f"[ {from_alias} :{field_type}/{field_name} {to_alias} ]" - def _assert_type(self, ref: Ref, ooi_type: Type[OOI]) -> str: + def _assert_type(self, ref: Ref, ooi_type: type[OOI]) -> str: if ooi_type not in get_abstract_types(): return self._to_object_type_statement(ref, ooi_type) concrete = sorted(to_concrete({ooi_type}), key=lambda t: t.__name__) return f"(or {' '.join([self._to_object_type_statement(ref, x) for x in concrete])} )" - def _to_object_type_statement(self, ref: Ref, other_type: Type[OOI]) -> str: + def _to_object_type_statement(self, ref: Ref, other_type: type[OOI]) -> str: return f'[ {self._get_object_alias(ref)} :object_type "{other_type.get_object_type()}" ]' def _compile_where_clauses(self, *, separator=" ") -> str: diff --git a/octopoes/octopoes/xtdb/query_builder.py b/octopoes/octopoes/xtdb/query_builder.py index 074ca9b60a5..97de6f301d7 100644 --- a/octopoes/octopoes/xtdb/query_builder.py +++ b/octopoes/octopoes/xtdb/query_builder.py @@ -1,5 +1,5 @@ import re -from typing import Dict, Iterator, List, Optional, Set, Union +from collections.abc import Iterator from octopoes.xtdb.related_field_generator import ( FieldSet, @@ -19,11 +19,11 @@ def str_val(val): def generate_pull_query( - field_set: Optional[FieldSet] = FieldSet.ALL_FIELDS, - where: Optional[Dict[str, Union[str, int, List[Union[str, int]], Set[Union[str, int]]]]] = None, - offset: Optional[int] = None, - limit: Optional[int] = None, - field_node: Optional[RelatedFieldNode] = None, + field_set: FieldSet | None = FieldSet.ALL_FIELDS, + where: dict[str, str | int | list[str | int] | set[str | int]] | None = None, + offset: int | None = None, + limit: int | None = None, + field_node: RelatedFieldNode | None = None, ) -> str: pk_prefix = ":xt/id" @@ -36,7 +36,7 @@ def generate_pull_query( # Break where clause in relevant sections for key, value in where.items(): var_name = re.sub("[^0-9a-zA-Z]+", "_", key) - if isinstance(value, (List, Set)): + if isinstance(value, list | set): value = sorted([str_val(value) for value in value]) _csv = join_csv(value) in_args.append(f"[{_csv}]") diff --git a/octopoes/octopoes/xtdb/related_field_generator.py b/octopoes/octopoes/xtdb/related_field_generator.py index 619068806a1..2b7975b0992 100644 --- a/octopoes/octopoes/xtdb/related_field_generator.py +++ b/octopoes/octopoes/xtdb/related_field_generator.py @@ -1,5 +1,3 @@ -from typing import Dict, Optional, Set, Tuple - from octopoes.xtdb import Datamodel, FieldSet, ForeignKey @@ -7,8 +5,8 @@ class RelatedFieldNode: def __init__( self, data_model: Datamodel, - object_types: Set[str], - path: Optional[Tuple[ForeignKey, ...]] = (), + object_types: set[str], + path: tuple[ForeignKey, ...] | None = (), ): self.data_model = data_model self.object_types = object_types @@ -16,12 +14,12 @@ def __init__( # relations_out -> { (origin_class_name, prop_name): QueryNode } # e.g: -> (DNSARecord, address): QueryNode[[IPAddressV4]] # and: -> (IPService, service): QueryNode[[Service]] - self.relations_out: Dict[Tuple[str, str], RelatedFieldNode] = {} + self.relations_out: dict[tuple[str, str], RelatedFieldNode] = {} # relations_in -> { (foreign_class_name, foreign_prop_name): QueryNode } # e.g: -> (DNSARecord, address, dns_a_records): QueryNode[[DNSARecord]] # and: -> (DNSAAAARecord, address, dns_aaaa_records): QueryNode[[DNSAAAARecord]] - self.relations_in: Dict[Tuple[str, str, str], RelatedFieldNode] = {} + self.relations_in: dict[tuple[str, str, str], RelatedFieldNode] = {} self.path = path @@ -107,7 +105,7 @@ def generate_field(self, field_set: FieldSet, pk_prefix: str): # Join fields return "[{}]".format(" ".join(sorted(fields))) - def search_nodes(self, search_object_types=Set[str]): + def search_nodes(self, search_object_types=set[str]): # Filter outgoing QueryNodes self.relations_out = { key: node for key, node in self.relations_out.items() if node.search_nodes(search_object_types) diff --git a/octopoes/tests/conftest.py b/octopoes/tests/conftest.py index 8afe7a64aa2..95c25391b0c 100644 --- a/octopoes/tests/conftest.py +++ b/octopoes/tests/conftest.py @@ -1,7 +1,7 @@ import uuid +from collections.abc import Iterator from datetime import datetime, timezone from ipaddress import IPv4Address, ip_address -from typing import Dict, Iterator, List, Optional, Set from unittest.mock import Mock import pytest @@ -54,11 +54,11 @@ def get(self, ooi_reference: Reference, valid_time: datetime) -> ScanProfileBase return self.profiles[ooi_reference] def save( - self, old_scan_profile: Optional[ScanProfileBase], new_scan_profile: ScanProfileBase, valid_time: datetime + self, old_scan_profile: ScanProfileBase | None, new_scan_profile: ScanProfileBase, valid_time: datetime ) -> None: self.profiles[new_scan_profile.reference] = new_scan_profile - def list_scan_profiles(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: + def list_scan_profiles(self, scan_profile_type: str | None, valid_time: datetime) -> list[ScanProfileBase]: if scan_profile_type: return [profile for profile in self.profiles.values() if profile.scan_profile_type == scan_profile_type] else: @@ -78,13 +78,13 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.oois = {} - def save(self, ooi: OOI, valid_time: datetime, end_valid_time: Optional[datetime] = None) -> None: + def save(self, ooi: OOI, valid_time: datetime, end_valid_time: datetime | None = None) -> None: self.oois[ooi.reference] = ooi - def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[str, OOI]: + def load_bulk(self, references: set[Reference], valid_time: datetime) -> dict[str, OOI]: return {ooi.primary_key: ooi for ooi in self.oois.values() if ooi.reference in references} - def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_time: datetime) -> Set[OOI]: + def list_neighbours(self, references: set[Reference], paths: set[Path], valid_time: datetime) -> set[OOI]: neighbours = set() for path in paths: @@ -107,7 +107,7 @@ def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_ti return neighbours - def list_oois_without_scan_profile(self, valid_time: datetime) -> Set[Reference]: + def list_oois_without_scan_profile(self, valid_time: datetime) -> set[Reference]: return set() diff --git a/octopoes/tests/integration/test_api_connector.py b/octopoes/tests/integration/test_api_connector.py index 83f2a36c41c..2e69bfb3817 100644 --- a/octopoes/tests/integration/test_api_connector.py +++ b/octopoes/tests/integration/test_api_connector.py @@ -2,7 +2,6 @@ import uuid from datetime import datetime, timezone from ipaddress import ip_address -from typing import List import pytest @@ -115,7 +114,7 @@ def test_query(octopoes_api_connector: OctopoesAPIConnector, valid_time: datetim ) ) - hostnames: List[OOI] = [Hostname(network=network.reference, name=f"test{i}") for i in range(10)] + hostnames: list[OOI] = [Hostname(network=network.reference, name=f"test{i}") for i in range(10)] addresses = [IPAddressV6(network=network.reference, address=ip_address("3e4d:64a2:cb49:bd48:a1ba:def3:d15d:9230"))] v4_addresses = [IPAddressV4(network=network.reference, address=ip_address("127.0.0.1"))] diff --git a/octopoes/tests/mocks/mock_ooi_types.py b/octopoes/tests/mocks/mock_ooi_types.py index c355c55e8a1..479ac80d088 100644 --- a/octopoes/tests/mocks/mock_ooi_types.py +++ b/octopoes/tests/mocks/mock_ooi_types.py @@ -2,10 +2,9 @@ from enum import Enum from ipaddress import IPv4Address, IPv6Address -from typing import Literal, Optional, Union +from typing import Annotated, Literal from pydantic import Field -from typing_extensions import Annotated from octopoes.models import OOI, Reference from octopoes.models.persistence import ReferenceField @@ -18,7 +17,7 @@ class MockNetwork(OOI): class MockIPAddress(OOI): - address: Union[IPv4Address, IPv6Address] + address: IPv4Address | IPv6Address network: Reference = ReferenceField(MockNetwork) _natural_key_attrs = ["network", "address"] @@ -71,7 +70,7 @@ class MockIPPort(OOI): address: Reference = ReferenceField(MockIPAddress, max_issue_scan_level=0, max_inherit_scan_level=4) protocol: MockProtocol port: Annotated[int, Field(gt=0, lt=2**16)] - state: Optional[MockPortState] + state: MockPortState | None _natural_key_attrs = ["address", "protocol", "port"] _reverse_relation_names = { @@ -94,10 +93,10 @@ class MockIPService(OOI): class MockHostname(OOI): object_type: Literal["MockHostname"] = "MockHostname" - dns_zone: Optional[Reference] = ReferenceField(MockDNSZone, default=None, max_issue_scan_level=1) + dns_zone: Reference | None = ReferenceField(MockDNSZone, default=None, max_issue_scan_level=1) network: Reference = ReferenceField(MockNetwork) name: str - fqdn: Optional[Reference] = ReferenceField("MockHostname", default=None) + fqdn: Reference | None = ReferenceField("MockHostname", default=None) _natural_key_attrs = ["network", "name"] _reverse_relation_names = { @@ -141,7 +140,7 @@ class MockLabel(OOI): ooi: Reference = ReferenceField(OOI) label_id: str - label_text: Optional[str] = None + label_text: str | None = None @property def natural_key(self) -> str: @@ -166,17 +165,18 @@ def natural_key(self) -> str: MockLabel, } -MockOOIType = Union[ - MockNetwork, - MockIPAddressV4, - MockIPAddressV6, - MockIPPort, - MockHostname, - MockDNSZone, - MockResolvedHostname, - MockDNSCNAMERecord, - MockLabel, -] +MockOOIType = ( + MockNetwork + | MockIPAddressV4 + | MockIPAddressV6 + | MockIPPort + | MockHostname + | MockDNSZone + | MockResolvedHostname + | MockDNSCNAMERecord + | MockLabel +) + for ooi_type in ALL_OOI_TYPES: ooi_type.model_rebuild() diff --git a/octopoes/tests/test_ooi_repository.py b/octopoes/tests/test_ooi_repository.py index 07b1b93271e..411ec6209a7 100644 --- a/octopoes/tests/test_ooi_repository.py +++ b/octopoes/tests/test_ooi_repository.py @@ -1,7 +1,7 @@ import re from datetime import datetime from ipaddress import IPv4Address -from typing import List, Literal, cast +from typing import Literal, cast from unittest import TestCase from unittest.mock import Mock, patch @@ -35,7 +35,7 @@ def test_node_from_ooi_with_list(self): class TestOOIClass(OOI): object_type: Literal["TestOOIClass"] = "TestOOIClass" id: str = "test_id" - multiple_refs: List[Reference] = ReferenceField(Network) + multiple_refs: list[Reference] = ReferenceField(Network) _natural_key_attrs = ["id"] internet = Network(name="internet") diff --git a/pyproject.toml b/pyproject.toml index 2026b1a3fae..4a0a896f514 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,10 +24,6 @@ paths = ["."] # To be extended with DJ, PT, RUF, C90, D, PL, RET select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH", "SIM", "PLC", "A", "S"] ignore = [ - "UP006", # Is not compatible with Python 3.8 - "UP007", # Is not compatible with Python 3.8 - "UP035", # Ignored temporarily until we've updated typing to Python 3.10 - "UP038", # Ignored temporarily until we've updated typing to Python 3.10 "A003", # Built-in shadowing is usually not a problem and some built-ins have very generic names "SIM108", # Ternary operator is not always more readable "S101", # Assert use is normal in pytest tests diff --git a/rocky/account/mixins.py b/rocky/account/mixins.py index 6f7d63b1b7b..b3190d90d47 100644 --- a/rocky/account/mixins.py +++ b/rocky/account/mixins.py @@ -1,5 +1,4 @@ from datetime import datetime, timezone -from typing import List, Optional from django.conf import settings from django.contrib.auth.mixins import PermissionRequiredMixin @@ -67,9 +66,9 @@ def __contains__(self, perm_name): class OrganizationView(View): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.organization: Optional[Organization] = None - self.octopoes_api_connector: Optional[OctopoesAPIConnector] = None - self.bytes_client: Optional[BytesClient] = None + self.organization: Organization | None = None + self.octopoes_api_connector: OctopoesAPIConnector | None = None + self.bytes_client: BytesClient | None = None self.organization_member = None self.indemnification_present = False @@ -143,7 +142,7 @@ def raise_clearance_level(self, ooi_reference: Reference, level: int) -> bool: return True - def raise_clearance_levels(self, ooi_references: List[Reference], level: int) -> bool: + def raise_clearance_levels(self, ooi_references: list[Reference], level: int) -> bool: self.verify_raise_clearance_level(level) self.octopoes_api_connector.save_many_scan_profiles( [DeclaredScanProfile(reference=reference, level=ScanLevel(level)) for reference in ooi_references], diff --git a/rocky/account/models.py b/rocky/account/models.py index 52bd0ba4cc1..7d082739f7d 100644 --- a/rocky/account/models.py +++ b/rocky/account/models.py @@ -1,5 +1,4 @@ from functools import cached_property -from typing import List from django.contrib.auth.base_user import BaseUserManager from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin @@ -89,18 +88,18 @@ def get_full_name(self): return self.full_name @cached_property - def all_organizations(self) -> List[Organization]: + def all_organizations(self) -> list[Organization]: return list(Organization.objects.all()) @cached_property - def organization_members(self) -> List[OrganizationMember]: + def organization_members(self) -> list[OrganizationMember]: """ Lists the user's OrganizationMembers including the related Organizations. """ return self.members.select_related("organization") @cached_property - def organizations(self) -> List[Organization]: + def organizations(self) -> list[Organization]: """ Lists all organizations a user is a member of, excluding organizations to which access is blocked. @@ -111,7 +110,7 @@ def organizations(self) -> List[Organization]: return [m.organization for m in self.organization_members if not m.blocked] @cached_property - def organizations_including_blocked(self) -> List[Organization]: + def organizations_including_blocked(self) -> list[Organization]: """ Lists all organizations a user is a member of, including organizations to which access is blocked. diff --git a/rocky/crisis_room/views.py b/rocky/crisis_room/views.py index e466140c962..4c06e86d005 100644 --- a/rocky/crisis_room/views.py +++ b/rocky/crisis_room/views.py @@ -1,6 +1,5 @@ import logging from dataclasses import dataclass -from typing import Dict, List from account.models import KATUser from django.conf import settings @@ -26,7 +25,7 @@ class OrganizationFindingCountPerSeverity: name: str code: str - finding_count_per_severity: Dict[str, int] + finding_count_per_severity: dict[str, int] @property def total(self) -> int: @@ -48,18 +47,18 @@ class CrisisRoomView(BreadcrumbsMixin, ConnectorFormMixin, ObservedAtMixin, Temp ] def sort_by_total( - self, finding_counts: List[OrganizationFindingCountPerSeverity] - ) -> List[OrganizationFindingCountPerSeverity]: + self, finding_counts: list[OrganizationFindingCountPerSeverity] + ) -> list[OrganizationFindingCountPerSeverity]: is_desc = self.request.GET.get("sort_total_by", "desc") != "asc" return sorted(finding_counts, key=lambda x: x.total, reverse=is_desc) def sort_by_severity( - self, finding_counts: List[OrganizationFindingCountPerSeverity] - ) -> List[OrganizationFindingCountPerSeverity]: + self, finding_counts: list[OrganizationFindingCountPerSeverity] + ) -> list[OrganizationFindingCountPerSeverity]: is_desc = self.request.GET.get("sort_critical_by", "desc") != "asc" return sorted(finding_counts, key=lambda x: x.total_critical, reverse=is_desc) - def get_finding_type_severity_count(self, organization: Organization) -> Dict[str, int]: + def get_finding_type_severity_count(self, organization: Organization) -> dict[str, int]: try: api_connector = OctopoesAPIConnector(settings.OCTOPOES_API, organization.code) return api_connector.count_findings_by_severity(valid_time=self.get_observed_at()) diff --git a/rocky/fmea/views/fmea_affected_objects.py b/rocky/fmea/views/fmea_affected_objects.py index 91a9d01b0ae..767361c3b61 100644 --- a/rocky/fmea/views/fmea_affected_objects.py +++ b/rocky/fmea/views/fmea_affected_objects.py @@ -1,5 +1,3 @@ -from typing import Dict, List - from django.contrib import messages from django.core.exceptions import ValidationError from django.shortcuts import get_object_or_404, redirect @@ -40,7 +38,7 @@ def add_success_notification(self): success_message = _("Failure mode affected objects successfully created.") messages.add_message(self.request, messages.SUCCESS, success_message) - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { @@ -69,7 +67,7 @@ def get_context_data(self, **kwargs): context["failure_mode_exist"] = FailureMode.objects.all().exists() return context - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { diff --git a/rocky/fmea/views/fmea_analytics.py b/rocky/fmea/views/fmea_analytics.py index 2f49d882279..8051cb0657e 100644 --- a/rocky/fmea/views/fmea_analytics.py +++ b/rocky/fmea/views/fmea_analytics.py @@ -1,5 +1,3 @@ -from typing import Dict, List - from django.http import HttpResponse from django.urls.base import reverse from django.utils.translation import gettext_lazy as _ @@ -30,7 +28,7 @@ def get_failure_mode_affected_object(self, **kwargs): ) return failure_mode_affected_objects - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { @@ -79,7 +77,7 @@ def populate_heatmap_data(self): heatmap_data.append(failure_mode_data) return heatmap_data - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append({"text": _("Heatmap"), "url": reverse("fmea_department_heatmap")}) return breadcrumbs diff --git a/rocky/fmea/views/fmea_failure_mode.py b/rocky/fmea/views/fmea_failure_mode.py index 4c1d47fccdb..e6f9754da83 100644 --- a/rocky/fmea/views/fmea_failure_mode.py +++ b/rocky/fmea/views/fmea_failure_mode.py @@ -1,5 +1,3 @@ -from typing import Dict, List - from django.contrib import messages from django.urls.base import reverse, reverse_lazy from django.utils.translation import gettext_lazy as _ @@ -38,7 +36,7 @@ def add_success_notification(self): success_message = _("Failure mode successfully created.") messages.add_message(self.request, messages.SUCCESS, success_message) - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { @@ -68,7 +66,7 @@ class FailureModeUpdateView(FailureModeBreadcrumbsMixin, UpdateView): def get_success_url(self, **kwargs): return reverse_lazy("fmea_failure_mode_detail", kwargs={"pk": self.object.id}) - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( @@ -104,7 +102,7 @@ class FailureModeDetailView(FailureModeBreadcrumbsMixin, DetailView): template_name = "fmea/fmea_failure_mode_detail.html" model = FailureMode - def build_breadcrumbs(self) -> List[Dict[str, str]]: + def build_breadcrumbs(self) -> list[dict[str, str]]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( diff --git a/rocky/fmea/views/fmea_failure_mode_effect.py b/rocky/fmea/views/fmea_failure_mode_effect.py index 7a46d6e2115..e0829678b80 100644 --- a/rocky/fmea/views/fmea_failure_mode_effect.py +++ b/rocky/fmea/views/fmea_failure_mode_effect.py @@ -1,5 +1,3 @@ -from typing import List - from django.contrib import messages from django.urls.base import reverse, reverse_lazy from django.utils.translation import gettext_lazy as _ @@ -34,7 +32,7 @@ def add_success_notification(self): success_message = _("Failure mode effect successfully created.") messages.add_message(self.request, messages.SUCCESS, success_message) - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { @@ -63,7 +61,7 @@ def get_context_data(self, **kwargs): context["editing_view"] = "editing" return context - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( @@ -93,7 +91,7 @@ class FailureModeEffectDetailView(FailureModeEffectBreadcrumbsMixin, DetailView) template_name = "fmea/fmea_failure_mode_effect_detail.html" model = FailureModeEffect - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( diff --git a/rocky/katalogus/client.py b/rocky/katalogus/client.py index 1b1520de048..61c2fbe63cc 100644 --- a/rocky/katalogus/client.py +++ b/rocky/katalogus/client.py @@ -1,7 +1,6 @@ import json from io import BytesIO from logging import getLogger -from typing import Dict, List, Optional, Set, Type, Union import requests from django.conf import settings @@ -19,14 +18,14 @@ class Plugin(BaseModel): id: str - repository_id: Optional[str] = None + repository_id: str | None = None name: str - version: Optional[str] = None - authors: Optional[str] = None - created: Optional[str] = None - description: Optional[str] = None - environment_keys: Optional[List[str]] = None - related: List[str] = Field(default_factory=list) + version: str | None = None + authors: str | None = None + created: str | None = None + description: str | None = None + environment_keys: list[str] | None = None + related: list[str] = Field(default_factory=list) enabled: bool type: str @@ -40,14 +39,14 @@ def can_scan(self, member) -> bool: class Boefje(Plugin): scan_level: SCAN_LEVEL - consumes: Set[Type[OOI]] - options: List[str] = None - runnable_hash: Optional[str] = None - produces: Set[str] + consumes: set[type[OOI]] + options: list[str] = None + runnable_hash: str | None = None + produces: set[str] # use a custom field_serializer for `consumes` @field_serializer("consumes") - def serialize_consumes(self, consumes: Set[Type[OOI]]): + def serialize_consumes(self, consumes: set[type[OOI]]): return {ooi_class.get_ooi_type() for ooi_class in consumes} def can_scan(self, member) -> bool: @@ -55,12 +54,12 @@ def can_scan(self, member) -> bool: class Normalizer(Plugin): - consumes: Set[str] - produces: Set[Type[OOI]] + consumes: set[str] + produces: set[type[OOI]] # use a custom field_serializer for `produces` @field_serializer("produces") - def serialize_produces(self, produces: Set[Type[OOI]]): + def serialize_produces(self, produces: set[type[OOI]]): return {ooi_class.get_ooi_type() for ooi_class in produces} @@ -89,12 +88,12 @@ def get_plugins(self, **params): response.raise_for_status() return [parse_plugin(plugin) for plugin in response.json()] - def get_plugin(self, plugin_id: str) -> Union[Boefje, Normalizer]: + def get_plugin(self, plugin_id: str) -> Boefje | Normalizer: response = self.session.get(f"{self.organization_uri}/plugins/{plugin_id}") response.raise_for_status() return parse_plugin(response.json()) - def get_plugin_schema(self, plugin_id) -> Optional[Dict]: + def get_plugin_schema(self, plugin_id) -> dict | None: response = self.session.get(f"{self.organization_uri}/plugins/{plugin_id}/schema.json") response.raise_for_status() @@ -106,12 +105,12 @@ def get_plugin_schema(self, plugin_id) -> Optional[Dict]: except SchemaError as error: logger.warning("Invalid schema found for plugin %s, %s", plugin_id, error) - def get_plugin_settings(self, plugin_id: str) -> Dict: + def get_plugin_settings(self, plugin_id: str) -> dict: response = self.session.get(f"{self.organization_uri}/{plugin_id}/settings") response.raise_for_status() return response.json() - def upsert_plugin_settings(self, plugin_id: str, values: Dict) -> None: + def upsert_plugin_settings(self, plugin_id: str, values: dict) -> None: response = self.session.put(f"{self.organization_uri}/{plugin_id}/settings", json=values) response.raise_for_status() @@ -132,10 +131,10 @@ def health(self) -> ServiceHealth: return ServiceHealth.model_validate_json(response.content) - def get_normalizers(self) -> List[Normalizer]: + def get_normalizers(self) -> list[Normalizer]: return self.get_plugins(plugin_type="normalizer") - def get_boefjes(self) -> List[Boefje]: + def get_boefjes(self) -> list[Boefje]: return self.get_plugins(plugin_type="boefje") def enable_boefje(self, plugin: Boefje) -> None: @@ -147,10 +146,10 @@ def enable_boefje_by_id(self, boefje_id: str) -> None: def disable_boefje(self, plugin: Boefje) -> None: self._patch_boefje_state(plugin.id, False, plugin.repository_id) - def get_enabled_boefjes(self) -> List[Boefje]: + def get_enabled_boefjes(self) -> list[Boefje]: return [plugin for plugin in self.get_boefjes() if plugin.enabled] - def get_enabled_normalizers(self) -> List[Normalizer]: + def get_enabled_normalizers(self) -> list[Normalizer]: return [plugin for plugin in self.get_normalizers() if plugin.enabled] def _patch_boefje_state(self, boefje_id: str, enabled: bool, repository_id: str) -> None: @@ -173,7 +172,7 @@ def get_cover(self, boefje_id: str) -> BytesIO: return BytesIO(response.content) -def parse_boefje(boefje: Dict) -> Boefje: +def parse_boefje(boefje: dict) -> Boefje: scan_level = SCAN_LEVEL(boefje["scan_level"]) consumes = set() @@ -197,7 +196,7 @@ def parse_boefje(boefje: Dict) -> Boefje: ) -def parse_normalizer(normalizer: Dict) -> Normalizer: +def parse_normalizer(normalizer: dict) -> Normalizer: # TODO: give normalizers a proper name in backend name = normalizer["id"].replace("_", " ").replace("kat ", "").title() @@ -222,7 +221,7 @@ def parse_normalizer(normalizer: Dict) -> Normalizer: ) -def parse_plugin(plugin: Dict) -> Union[Boefje, Normalizer]: +def parse_plugin(plugin: dict) -> Boefje | Normalizer: if plugin["type"] == "boefje": return parse_boefje(plugin) if plugin["type"] == "normalizer": diff --git a/rocky/katalogus/forms/plugin_settings.py b/rocky/katalogus/forms/plugin_settings.py index 183a3587d96..0039e779491 100644 --- a/rocky/katalogus/forms/plugin_settings.py +++ b/rocky/katalogus/forms/plugin_settings.py @@ -1,5 +1,3 @@ -from typing import Dict - from django import forms from django.utils.translation import gettext_lazy as _ from jsonschema.validators import Draft202012Validator @@ -15,7 +13,7 @@ class PluginSchemaForm(forms.Form): "required": _("This field is required."), } - def __init__(self, plugin_schema: Dict, values: Dict, *args, **kwargs): + def __init__(self, plugin_schema: dict, values: dict, *args, **kwargs): super().__init__(*args, **kwargs) self.plugin_schema = plugin_schema self.values = values diff --git a/rocky/katalogus/utils.py b/rocky/katalogus/utils.py index 260a55a5e9f..c349906f9ec 100644 --- a/rocky/katalogus/utils.py +++ b/rocky/katalogus/utils.py @@ -1,10 +1,8 @@ -from typing import List, Type - from tools.models import Organization from katalogus.client import Boefje, get_katalogus from octopoes.models import OOI -def get_enabled_boefjes_for_ooi_class(ooi_class: Type[OOI], organization: Organization) -> List[Boefje]: +def get_enabled_boefjes_for_ooi_class(ooi_class: type[OOI], organization: Organization) -> list[Boefje]: return [boefje for boefje in get_katalogus(organization.code).get_enabled_boefjes() if ooi_class in boefje.consumes] diff --git a/rocky/katalogus/views/katalogus.py b/rocky/katalogus/views/katalogus.py index 8a9ca27fc8c..e63748b49a2 100644 --- a/rocky/katalogus/views/katalogus.py +++ b/rocky/katalogus/views/katalogus.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any from account.mixins import OrganizationView from django.urls import reverse @@ -16,7 +16,7 @@ def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) self.katalogus_client = get_katalogus(self.organization.code) - def get_initial(self) -> Dict[str, Any]: + def get_initial(self) -> dict[str, Any]: initial = super().get_initial() initial["sorting_options"] = self.request.GET.get("sorting_options", "a-z") initial["filter_options"] = self.request.GET.get("filter_options", "all") diff --git a/rocky/katalogus/views/mixins.py b/rocky/katalogus/views/mixins.py index 1d81653ce0f..fae99481e9f 100644 --- a/rocky/katalogus/views/mixins.py +++ b/rocky/katalogus/views/mixins.py @@ -1,5 +1,4 @@ from logging import getLogger -from typing import List, Optional, Union from account.mixins import OrganizationView from django.contrib import messages @@ -36,9 +35,9 @@ class SinglePluginView(OrganizationView): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.katalogus_client: Optional[KATalogusClientV1] = None + self.katalogus_client: KATalogusClientV1 | None = None self.plugin_schema = None - self.plugin: Union[KATalogusBoefje, KATalogusNormalizer] = None + self.plugin: KATalogusBoefje | KATalogusNormalizer = None def setup(self, request, *args, **kwargs): """ @@ -98,7 +97,7 @@ class BoefjeMixin(OctopoesView): this mixin provides the methods to construct the boefjes for the OOI's and run them. """ - def run_boefje(self, katalogus_boefje: KATalogusBoefje, ooi: Optional[OOI]) -> None: + def run_boefje(self, katalogus_boefje: KATalogusBoefje, ooi: OOI | None) -> None: boefje_task = BoefjeTask( boefje=Boefje.model_validate(katalogus_boefje.model_dump()), input_ooi=ooi.reference if ooi else None, @@ -111,7 +110,7 @@ def run_boefje(self, katalogus_boefje: KATalogusBoefje, ooi: Optional[OOI]) -> N def run_boefje_for_oois( self, boefje: KATalogusBoefje, - oois: List[OOI], + oois: list[OOI], ) -> None: if not oois and not boefje.consumes: self.run_boefje(boefje, None) diff --git a/rocky/katalogus/views/plugin_detail.py b/rocky/katalogus/views/plugin_detail.py index 58fa705292e..e96bda0f238 100644 --- a/rocky/katalogus/views/plugin_detail.py +++ b/rocky/katalogus/views/plugin_detail.py @@ -1,7 +1,7 @@ from datetime import datetime from enum import Enum from logging import getLogger -from typing import Any, Dict, List +from typing import Any from account.mixins import OrganizationView from django.contrib import messages @@ -228,7 +228,7 @@ def get_form_filtered_consumable_oois(self): oois = self.get_form_consumable_oois() return [ooi for ooi in oois if ooi.scan_profile.level >= self.plugin.scan_level.value] - def get_oois(self, selected_oois: List[str]) -> Dict[str, Any]: + def get_oois(self, selected_oois: list[str]) -> dict[str, Any]: oois_with_clearance = [] oois_without_clearance = [] for ooi in selected_oois: diff --git a/rocky/katalogus/views/plugin_enable_disable.py b/rocky/katalogus/views/plugin_enable_disable.py index 48467fd51a1..227a5427b90 100644 --- a/rocky/katalogus/views/plugin_enable_disable.py +++ b/rocky/katalogus/views/plugin_enable_disable.py @@ -1,5 +1,4 @@ from logging import getLogger -from typing import Dict from django.contrib import messages from django.http import HttpResponseRedirect @@ -14,7 +13,7 @@ class PluginEnableDisableView(SinglePluginView): - def check_required_settings(self, settings: Dict): + def check_required_settings(self, settings: dict): if self.plugin_schema is None or "required" not in self.plugin_schema: return True diff --git a/rocky/onboarding/views.py b/rocky/onboarding/views.py index fc6037f3b93..d093297905b 100644 --- a/rocky/onboarding/views.py +++ b/rocky/onboarding/views.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Type +from typing import Any from account.forms import MemberRegistrationForm, OnboardingOrganizationUpdateForm, OrganizationForm from account.mixins import ( @@ -116,7 +116,7 @@ class OnboardingSetupScanSelectPluginsView( ): template_name = "step_3g_setup_scan_select_plugins.html" current_step = 3 - report: Type[Report] = DNSReport + report: type[Report] = DNSReport permission_required = "tools.can_enable_disable_boefje" def get_form(self): @@ -148,7 +148,7 @@ def post(self, request, *args, **kwargs): return redirect(get_ooi_url("step_setup_scan_ooi_detail", ooi_id, self.organization.code)) return self.get(request, *args, **kwargs) - def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: + def get_context_data(self, **kwargs: Any) -> dict[str, Any]: context = super().get_context_data(**kwargs) context["select_boefjes_form"] = self.get_form() return context @@ -170,7 +170,7 @@ class OnboardingOOIForm(OOIForm): """ def __init__( - self, hidden_fields: Dict[str, str], ooi_class: Type[OOI], connector: OctopoesAPIConnector, *args, **kwargs + self, hidden_fields: dict[str, str], ooi_class: type[OOI], connector: OctopoesAPIConnector, *args, **kwargs ): self.hidden_ooi_fields = hidden_fields super().__init__(ooi_class, connector, *args, **kwargs) @@ -222,7 +222,7 @@ def get_form_kwargs(self): return kwargs - def get_ooi_class(self) -> Type[OOI]: + def get_ooi_class(self) -> type[OOI]: try: return type_by_name(self.kwargs["ooi_type"]) except KeyError: @@ -232,7 +232,7 @@ def get_ooi_success_url(self, ooi: OOI) -> str: self.request.session["ooi_id"] = ooi.primary_key return get_ooi_url("step_clearance_level_introduction", ooi.primary_key, self.organization.code) - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: return super().build_breadcrumbs() + [ { "url": reverse("ooi_add_type_select", kwargs={"organization_code": self.organization.code}), @@ -240,7 +240,7 @@ def build_breadcrumbs(self) -> List[Breadcrumb]: }, ] - def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: + def get_context_data(self, **kwargs: Any) -> dict[str, Any]: context = super().get_context_data(**kwargs) context["type"] = self.ooi_class.get_ooi_type() return context @@ -442,7 +442,7 @@ def set_member_onboarded(self): class BaseReportView(BaseOOIDetailView): - report: Type[Report] + report: type[Report] depth = 15 def get_tree_dict(self): diff --git a/rocky/reports/forms.py b/rocky/reports/forms.py index 389e66c6ff9..ad399ad07a2 100644 --- a/rocky/reports/forms.py +++ b/rocky/reports/forms.py @@ -1,5 +1,3 @@ -from typing import List, Set - from django import forms from django.utils.translation import gettext_lazy as _ from tools.forms.base import BaseRockyForm @@ -15,7 +13,7 @@ class OOITypeMultiCheckboxForReportForm(BaseRockyForm): widget=forms.CheckboxSelectMultiple, ) - def __init__(self, ooi_types: List[OOIType], *args, **kwargs): + def __init__(self, ooi_types: list[OOIType], *args, **kwargs): super().__init__(*args, **kwargs) self.fields["ooi_type"].choices = ((ooi_type, ooi_type) for ooi_type in ooi_types) @@ -27,7 +25,7 @@ class ReportTypeMultiselectForm(BaseRockyForm): widget=forms.CheckboxSelectMultiple, ) - def __init__(self, report_types: Set[Report], *args, **kwargs): + def __init__(self, report_types: set[Report], *args, **kwargs): super().__init__(*args, **kwargs) report_types_choices = ((report_type.id, report_type.name) for report_type in report_types) self.fields["report_type"].choices = report_types_choices diff --git a/rocky/reports/report_types/aggregate_organisation_report/report.py b/rocky/reports/report_types/aggregate_organisation_report/report.py index 521d64aa027..1056075a0a8 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/report.py +++ b/rocky/reports/report_types/aggregate_organisation_report/report.py @@ -1,6 +1,5 @@ from datetime import datetime from logging import getLogger -from typing import List from django.utils.translation import gettext_lazy as _ @@ -442,8 +441,8 @@ def collect_system_specific_data(self, data, services, system_type: SystemType, def aggregate_reports( connector: OctopoesAPIConnector, - input_ooi_references: List[OOI], - selected_report_types: List[str], + input_ooi_references: list[OOI], + selected_report_types: list[str], valid_time: datetime, ): aggregate_report = AggregateOrganisationReport(connector) diff --git a/rocky/reports/report_types/definitions.py b/rocky/reports/report_types/definitions.py index eef23687183..5975f157241 100644 --- a/rocky/reports/report_types/definitions.py +++ b/rocky/reports/report_types/definitions.py @@ -2,7 +2,7 @@ from datetime import datetime from logging import getLogger from pathlib import Path -from typing import Any, Dict, List, Set, TypedDict +from typing import Any, TypedDict from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models.types import OOIType @@ -12,13 +12,13 @@ class ReportPlugins(TypedDict): - required: List[str] - optional: List[str] + required: list[str] + optional: list[str] class AggregateReportSubReports(TypedDict): - required: List[str] - optional: List[str] + required: list[str] + optional: list[str] class Report(ABC): @@ -26,17 +26,17 @@ class Report(ABC): name: str description: str plugins: ReportPlugins - input_ooi_types: Set[OOIType] + input_ooi_types: set[OOIType] template_path: str = "report.html" def __init__(self, octopoes_api_connector: OctopoesAPIConnector): self.octopoes_api_connector = octopoes_api_connector - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: raise NotImplementedError @classmethod - def class_attributes(cls) -> Dict[str, any]: + def class_attributes(cls) -> dict[str, any]: return { "id": cls.id, "name": cls.name, @@ -57,7 +57,7 @@ class AggregateReport(ABC): def __init__(self, octopoes_api_connector): self.octopoes_api_connector = octopoes_api_connector - def post_process_data(self, data: Dict[str, Any], valid_time: datetime) -> Dict[str, Any]: + def post_process_data(self, data: dict[str, Any], valid_time: datetime) -> dict[str, Any]: raise NotImplementedError @@ -66,13 +66,13 @@ class MultiReport(ABC): name: str description: str plugins: ReportPlugins - input_ooi_types: Set[OOIType] + input_ooi_types: set[OOIType] template_path: str = "report.html" def __init__(self, octopoes_api_connector): self.octopoes_api_connector = octopoes_api_connector - def post_process_data(self, data: Dict[str, Any]) -> Dict[str, Any]: + def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: raise NotImplementedError diff --git a/rocky/reports/report_types/dns_report/report.py b/rocky/reports/report_types/dns_report/report.py index e10c25459a3..5d0cd905603 100644 --- a/rocky/reports/report_types/dns_report/report.py +++ b/rocky/reports/report_types/dns_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -21,7 +21,7 @@ class DNSReport(Report): input_ooi_types = {Hostname} template_path = "dns_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: ref = Reference.from_str(input_ooi) tree = self.octopoes_api_connector.get_tree( ref, depth=3, types={DNSRecord, Finding}, valid_time=valid_time diff --git a/rocky/reports/report_types/helpers.py b/rocky/reports/report_types/helpers.py index 4f77be8e0f0..7aff426908a 100644 --- a/rocky/reports/report_types/helpers.py +++ b/rocky/reports/report_types/helpers.py @@ -1,5 +1,4 @@ from abc import ABCMeta -from typing import Dict, List, Set, Type from octopoes.models import OOI, Reference from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport @@ -36,14 +35,14 @@ MULTI_REPORTS = [MultiOrganizationReport] -def get_ooi_types_with_report() -> Set[Type[OOI]]: +def get_ooi_types_with_report() -> set[type[OOI]]: """ Get all OOI types that have a report """ return {ooi_type for report in REPORTS for ooi_type in report.input_ooi_types} -def get_report_types_for_ooi(ooi_pk: str) -> List[Type[Report]]: +def get_report_types_for_ooi(ooi_pk: str) -> list[type[Report]]: """ Get all report types that can be generated for a given OOI """ @@ -52,14 +51,14 @@ def get_report_types_for_ooi(ooi_pk: str) -> List[Type[Report]]: return [report for report in REPORTS if ooi_type in report.input_ooi_types] -def get_report_types_for_oois(ooi_pks: List[str]) -> Set[Type[Report]]: +def get_report_types_for_oois(ooi_pks: list[str]) -> set[type[Report]]: """ Get all report types that can be generated for a given list of OOIs """ return {report for ooi_pk in ooi_pks for report in get_report_types_for_ooi(ooi_pk)} -def get_report_by_id(report_id: str) -> Type[Report]: +def get_report_by_id(report_id: str) -> type[Report]: """ Get report type by id """ @@ -69,11 +68,11 @@ def get_report_by_id(report_id: str) -> Type[Report]: raise ValueError(f"Report with id {report_id} not found") -def get_reports(report_ids: List[str]) -> List[Report]: +def get_reports(report_ids: list[str]) -> list[Report]: return [get_report_by_id(report_id) for report_id in report_ids] -def get_plugins_for_report_ids(reports: List[str]) -> Dict[str, Set[str]]: +def get_plugins_for_report_ids(reports: list[str]) -> dict[str, set[str]]: """ Get all boefjes that are required and optional for a given list of reports """ @@ -89,7 +88,7 @@ def get_plugins_for_report_ids(reports: List[str]) -> Dict[str, Set[str]]: return {"required": required_boefjes, "optional": optional_boefjes} -def get_report_types_from_aggregate_report(aggregate_report: ABCMeta) -> Dict[str, Set[Type[Report]]]: +def get_report_types_from_aggregate_report(aggregate_report: ABCMeta) -> dict[str, set[type[Report]]]: required_reports = set() optional_reports = set() @@ -99,7 +98,7 @@ def get_report_types_from_aggregate_report(aggregate_report: ABCMeta) -> Dict[st return {"required": required_reports, "optional": optional_reports} -def get_ooi_types_from_aggregate_report(aggregate_report: ABCMeta) -> Set[Type[OOI]]: +def get_ooi_types_from_aggregate_report(aggregate_report: ABCMeta) -> set[type[OOI]]: ooi_types = set() for reports in aggregate_report.reports.values(): for report in reports: diff --git a/rocky/reports/report_types/ipv6_report/report.py b/rocky/reports/report_types/ipv6_report/report.py index 743da693b59..5648acf327c 100644 --- a/rocky/reports/report_types/ipv6_report/report.py +++ b/rocky/reports/report_types/ipv6_report/report.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -29,7 +29,7 @@ class IPv6Report(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "ipv6_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: """ For hostnames, check whether they point to ipv6 addresses. For ip addresses, check all hostnames that point to them, and check whether they point to ipv6 addresses. diff --git a/rocky/reports/report_types/mail_report/report.py b/rocky/reports/report_types/mail_report/report.py index 3a67ebe432f..30f05efac2d 100644 --- a/rocky/reports/report_types/mail_report/report.py +++ b/rocky/reports/report_types/mail_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict, List +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -23,7 +23,7 @@ class MailReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "mail_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: hostnames = [] mail_security_measures = {} @@ -80,7 +80,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: "number_of_dkim": number_of_dkim, } - def _get_measures(self, valid_time: datetime, hostname) -> List[OOI]: + def _get_measures(self, valid_time: datetime, hostname) -> list[OOI]: finding_types = self.octopoes_api_connector.query( "Hostname. Dict[str, Any]: + def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: """ The data is of the form: { @@ -242,7 +242,7 @@ def post_process_data(self, data: Dict[str, Any]) -> Dict[str, Any]: def collect_report_data( connector: OctopoesAPIConnector, - input_ooi_references: List[str], + input_ooi_references: list[str], ): report_data = {} for ooi in [x for x in input_ooi_references if Reference.from_str(x).class_type == ReportData]: diff --git a/rocky/reports/report_types/name_server_report/report.py b/rocky/reports/report_types/name_server_report/report.py index 7b36bcbe499..bcba4e0481d 100644 --- a/rocky/reports/report_types/name_server_report/report.py +++ b/rocky/reports/report_types/name_server_report/report.py @@ -1,7 +1,7 @@ from dataclasses import dataclass, field from datetime import datetime from logging import getLogger -from typing import Any, Dict, List +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -27,7 +27,7 @@ def __bool__(self): @dataclass class NameServerChecks: - checks: List[NameServerCheck] = field(default_factory=list) + checks: list[NameServerCheck] = field(default_factory=list) @property def no_uncommon_ports(self): @@ -66,7 +66,7 @@ class NameServerSystemReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "name_server_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: hostnames = [] try: diff --git a/rocky/reports/report_types/open_ports_report/report.py b/rocky/reports/report_types/open_ports_report/report.py index 70b83471333..427091e5ffd 100644 --- a/rocky/reports/report_types/open_ports_report/report.py +++ b/rocky/reports/report_types/open_ports_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -22,7 +22,7 @@ class OpenPortsReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "open_ports_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: try: ooi = self.octopoes_api_connector.get(Reference.from_str(input_ooi), valid_time) except ObjectNotFoundException as e: diff --git a/rocky/reports/report_types/rpki_report/report.py b/rocky/reports/report_types/rpki_report/report.py index 79be878dbf4..220862b6960 100644 --- a/rocky/reports/report_types/rpki_report/report.py +++ b/rocky/reports/report_types/rpki_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -24,7 +24,7 @@ class RPKIReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "rpki_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: try: ooi = self.octopoes_api_connector.get(Reference.from_str(input_ooi), valid_time) except ObjectNotFoundException as e: diff --git a/rocky/reports/report_types/safe_connections_report/report.py b/rocky/reports/report_types/safe_connections_report/report.py index 08e6385015f..148b376c7fc 100644 --- a/rocky/reports/report_types/safe_connections_report/report.py +++ b/rocky/reports/report_types/safe_connections_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -23,7 +23,7 @@ class SafeConnectionsReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "safe_connections_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: try: ooi = self.octopoes_api_connector.get(Reference.from_str(input_ooi), valid_time) except ObjectNotFoundException as e: diff --git a/rocky/reports/report_types/systems_report/report.py b/rocky/reports/report_types/systems_report/report.py index 1d6b057b70f..c2ebc101018 100644 --- a/rocky/reports/report_types/systems_report/report.py +++ b/rocky/reports/report_types/systems_report/report.py @@ -1,7 +1,7 @@ from dataclasses import dataclass from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ from strenum import StrEnum @@ -37,7 +37,7 @@ class SystemReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "systems_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: ips = [] try: diff --git a/rocky/reports/report_types/tls_report/report.py b/rocky/reports/report_types/tls_report/report.py index 2e2125f0539..30c9b4594ee 100644 --- a/rocky/reports/report_types/tls_report/report.py +++ b/rocky/reports/report_types/tls_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -23,7 +23,7 @@ class TLSReport(Report): input_ooi_types = {IPService} template_path = "tls_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: suites = {} findings = [] suites_with_findings = [] diff --git a/rocky/reports/report_types/vulnerability_report/report.py b/rocky/reports/report_types/vulnerability_report/report.py index d0ac0664260..2d1de99493e 100644 --- a/rocky/reports/report_types/vulnerability_report/report.py +++ b/rocky/reports/report_types/vulnerability_report/report.py @@ -1,7 +1,7 @@ from collections import Counter from datetime import datetime from logging import getLogger -from typing import Any, Dict, List, Union +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -26,12 +26,12 @@ class VulnerabilityReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "vulnerability_report/report.html" - def get_finding_valid_time_history(self, reference: str) -> List[datetime]: + def get_finding_valid_time_history(self, reference: str) -> list[datetime]: transaction_record = self.octopoes_api_connector.get_history(reference=reference) valid_time_history = [transaction.valid_time for transaction in transaction_record] return valid_time_history - def get_findings(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[str, List[Union[str, Finding]]]]: + def get_findings(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[str, list[str | Finding]]]: aggregated_findings = [] finding_types = [] findings_data = {} @@ -78,7 +78,7 @@ def get_findings(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[s return findings_data - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Dict[str, Any]]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[str, Any]]: data = {} critical = RiskLevelSeverity.CRITICAL.value diff --git a/rocky/reports/report_types/web_system_report/report.py b/rocky/reports/report_types/web_system_report/report.py index ff2cc22bcb7..bb766c74d6e 100644 --- a/rocky/reports/report_types/web_system_report/report.py +++ b/rocky/reports/report_types/web_system_report/report.py @@ -1,7 +1,7 @@ from dataclasses import dataclass, field from datetime import datetime from logging import getLogger -from typing import Any, Dict, List +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -43,7 +43,7 @@ def __bool__(self): @dataclass class WebChecks: - checks: List[WebCheck] = field(default_factory=list) + checks: list[WebCheck] = field(default_factory=list) @property def has_csp(self): @@ -110,7 +110,7 @@ class WebSystemReport(Report): input_ooi_types = {Hostname, IPAddressV4, IPAddressV6} template_path = "web_system_report/report.html" - def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: hostnames = [] try: diff --git a/rocky/reports/utils.py b/rocky/reports/utils.py index e06c8e390e2..02d672847c4 100644 --- a/rocky/reports/utils.py +++ b/rocky/reports/utils.py @@ -1,6 +1,5 @@ import dataclasses import logging -from typing import Dict, List from django.core.serializers.json import DjangoJSONEncoder @@ -9,9 +8,9 @@ logger = logging.getLogger(__name__) -def debug_json_keys(data: Dict, path: List) -> None: +def debug_json_keys(data: dict, path: list) -> None: for key, value in data.items(): - if not isinstance(key, (str, int)): + if not isinstance(key, str | int): logger.error("Key %s is type %s, path is %s", key, type(key), path) if isinstance(value, dict): debug_json_keys(value, path + [key]) diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index 05f7086dd86..b5580560a44 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Tuple +from typing import Any from django.conf import settings from django.contrib import messages @@ -175,7 +175,7 @@ def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) - def generate_reports_for_oois(self) -> Tuple[AggregateOrganisationReport, Any, Dict[Any, Dict[Any, Any]]]: + def generate_reports_for_oois(self) -> tuple[AggregateOrganisationReport, Any, dict[Any, dict[Any, Any]]]: aggregate_report, post_processed_data, report_data, error_oois = aggregate_reports( self.octopoes_api_connector, self.get_oois(), self.selected_report_types, self.valid_time ) diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index f051e8f4dda..5cad606ccd4 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any, Dict, List, Optional, Set, Type, Union +from typing import Any from account.mixins import OrganizationView from django.contrib import messages @@ -28,7 +28,7 @@ } -def get_selection(request: HttpRequest, pre_selection: Optional[Dict[str, Union[str, List[str]]]] = None) -> str: +def get_selection(request: HttpRequest, pre_selection: dict[str, str | list[str]] | None = None) -> str: if pre_selection is not None: return "?" + urlencode(pre_selection, True) return "?" + urlencode(request.GET, True) @@ -88,7 +88,7 @@ def setup(self, request, *args, **kwargs): get_plugins_for_report_ids(report_ids) ) - def get_oois(self) -> List[OOI]: + def get_oois(self) -> list[OOI]: if "all" in self.selected_oois: return self.octopoes_api_connector.list_objects( self.get_ooi_types(), @@ -106,28 +106,28 @@ def get_oois(self) -> List[OOI]: logger.warning("No data could be found for '%s' ", ooi_id) return oois - def get_ooi_filter_forms(self, ooi_types: Set[OOIType]) -> Dict[str, Form]: + def get_ooi_filter_forms(self, ooi_types: set[OOIType]) -> dict[str, Form]: return { "ooi_type_form": OOITypeMultiCheckboxForReportForm( sorted([ooi_class.get_ooi_type() for ooi_class in ooi_types]), self.request.GET ) } - def get_report_types_for_generate_report(self, reports: Set[Type[Report]]) -> List[Dict[str, str]]: + def get_report_types_for_generate_report(self, reports: set[type[Report]]) -> list[dict[str, str]]: return [ {"id": report_type.id, "name": report_type.name, "description": report_type.description} for report_type in reports ] def get_report_types_for_aggregate_report( - self, reports_dict: Dict[str, Set[Type[Report]]] - ) -> Dict[str, List[Dict[str, str]]]: + self, reports_dict: dict[str, set[type[Report]]] + ) -> dict[str, list[dict[str, str]]]: report_types = {} for option, reports in reports_dict.items(): report_types[option] = self.get_report_types_for_generate_report(reports) return report_types - def get_required_optional_plugins(self, plugin_ids: Dict[str, Set[str]]) -> (Dict[str, Plugin], Dict[str, bool]): + def get_required_optional_plugins(self, plugin_ids: dict[str, set[str]]) -> (dict[str, Plugin], dict[str, bool]): plugins = {} for plugin, plugin_ids in plugin_ids.items(): plugins[plugin] = [get_katalogus(self.organization.code).get_plugin(plugin_id) for plugin_id in plugin_ids] @@ -138,14 +138,14 @@ def get_required_optional_plugins(self, plugin_ids: Dict[str, Set[str]]) -> (Dic return plugins, all_plugins_enabled - def are_plugins_enabled(self, plugins_dict: Dict[str, Plugin]) -> bool: + def are_plugins_enabled(self, plugins_dict: dict[str, Plugin]) -> bool: for k, plugins in plugins_dict.items(): for plugin in plugins: if not plugin.enabled: return False return True - def get_report_types_from_choice(self) -> List[Type[Report]]: + def get_report_types_from_choice(self) -> list[type[Report]]: report_types = [] for report_type in self.selected_report_types: try: @@ -157,7 +157,7 @@ def get_report_types_from_choice(self) -> List[Type[Report]]: pass return report_types - def get_report_types(self) -> List[ReportType]: + def get_report_types(self) -> list[ReportType]: return [ {"id": report_type.id, "name": report_type.name, "description": report_type.description} for report_type in self.get_report_types_from_choice() diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index 0ad3da4cffb..d7324e42220 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any from django.contrib import messages from django.http import HttpRequest, HttpResponse @@ -142,7 +142,7 @@ def get(self, request, *args, **kwargs): messages.add_message(self.request, messages.WARNING, warning_message) return super().get(request, *args, **kwargs) - def generate_reports_for_oois(self) -> Dict[str, Dict[str, Dict[str, str]]]: + def generate_reports_for_oois(self) -> dict[str, dict[str, dict[str, str]]]: report_data = {} error_oois = [] for ooi in self.selected_oois: diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index e2e5f3691e2..d4111fa10bc 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any from django.contrib import messages from django.http import HttpRequest, HttpResponse @@ -123,7 +123,7 @@ class MultiReportView(BreadcrumbsMultiReportView, BaseReportView, TemplateView): template_name = "multi_report.html" current_step = 6 - def multi_reports_for_oois(self) -> Dict[str, Dict[str, Any]]: + def multi_reports_for_oois(self) -> dict[str, dict[str, Any]]: report = MultiOrganizationReport(self.octopoes_api_connector) return report.post_process_data(collect_report_data(self.octopoes_api_connector, self.selected_oois)) diff --git a/rocky/rocky/bytes_client.py b/rocky/rocky/bytes_client.py index e2166c48bf3..06352073f53 100644 --- a/rocky/rocky/bytes_client.py +++ b/rocky/rocky/bytes_client.py @@ -1,7 +1,6 @@ import logging import uuid from datetime import datetime, timezone -from typing import Dict, List, Optional, Set import requests from django.conf import settings @@ -31,12 +30,12 @@ def health(self) -> ServiceHealth: return ServiceHealth.parse_obj(response.json()) @staticmethod - def raw_from_declarations(declarations: List[Declaration]): + def raw_from_declarations(declarations: list[Declaration]): json_string = f"[{','.join([declaration.json() for declaration in declarations])}]" return json_string.encode("utf-8") - def add_manual_proof(self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_types: Optional[Set[str]] = None): + def add_manual_proof(self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_types: set[str] | None = None): """Per convention for a generic normalizer, we add a raw list of declarations, not a single declaration""" if manual_mime_types is None: @@ -72,7 +71,7 @@ def add_manual_proof(self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_typ ), ) - def upload_raw(self, raw: bytes, manual_mime_types: Set[str], input_ooi: Optional[str] = None): + def upload_raw(self, raw: bytes, manual_mime_types: set[str], input_ooi: str | None = None): self.login() boefje_meta = BoefjeMeta( @@ -97,7 +96,7 @@ def _save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: response.raise_for_status() - def _save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: Set[str] = None) -> str: + def _save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: set[str] = None) -> str: if not mime_types: mime_types = set() @@ -122,7 +121,7 @@ def get_raw(self, raw_id: str) -> bytes: return response.content - def get_raw_metas(self, boefje_meta_id: str, organization_code: str) -> List: + def get_raw_metas(self, boefje_meta_id: str, organization_code: str) -> list: # More than 100 raw files per Boefje run is very unlikely at this stage, but eventually we can start paginating raw_files_limit = 100 params = {"boefje_meta_id": boefje_meta_id, "limit": raw_files_limit, "organization": self.organization} @@ -139,7 +138,7 @@ def get_raw_metas(self, boefje_meta_id: str, organization_code: str) -> List: return metas - def get_normalizer_meta(self, normalizer_meta_id: str) -> Dict: + def get_normalizer_meta(self, normalizer_meta_id: str) -> dict: # Note: we assume organization permissions are handled before requesting raw data. response = self.session.get(f"{self.base_url}/bytes/normalizer_meta/{normalizer_meta_id}") @@ -150,7 +149,7 @@ def get_normalizer_meta(self, normalizer_meta_id: str) -> Dict: def login(self): self.session.headers.update(self._authorization_header()) - def _authorization_header(self) -> Dict[str, str]: + def _authorization_header(self) -> dict[str, str]: return {"Authorization": f"bearer {self._get_token()}"} def _get_token(self) -> str: diff --git a/rocky/rocky/health.py b/rocky/rocky/health.py index 7e4b43b70ac..cc86df6dc7c 100644 --- a/rocky/rocky/health.py +++ b/rocky/rocky/health.py @@ -1,4 +1,4 @@ -from typing import Any, List, Optional +from typing import Any from pydantic import BaseModel, Field @@ -6,9 +6,9 @@ class ServiceHealth(BaseModel): service: str healthy: bool = False - version: Optional[str] = None + version: str | None = None additional: Any = None - results: List["ServiceHealth"] = Field(default_factory=list) + results: list["ServiceHealth"] = Field(default_factory=list) ServiceHealth.update_forward_refs() diff --git a/rocky/rocky/keiko.py b/rocky/rocky/keiko.py index 2552f8b29ea..1950a110c50 100644 --- a/rocky/rocky/keiko.py +++ b/rocky/rocky/keiko.py @@ -1,9 +1,10 @@ import re import time +from collections.abc import Iterable from datetime import date, datetime, timezone from http import HTTPStatus from io import BytesIO -from typing import Any, BinaryIO, Dict, Iterable, List, Optional +from typing import Any, BinaryIO import requests from django.conf import settings @@ -37,7 +38,7 @@ def __init__(self, base_uri: str, timeout: int = 60): self._base_uri = base_uri self._timeout = timeout - def generate_report(self, template: str, data: Dict, glossary: str) -> str: + def generate_report(self, template: str, data: dict, glossary: str) -> str: try: res = self.session.post( f"{self._base_uri}/reports", @@ -81,7 +82,7 @@ def health(self) -> ServiceHealth: class ReportQuery: - def to_dict(self) -> Dict: + def to_dict(self) -> dict: raise NotImplementedError def to_url(self) -> str: @@ -107,7 +108,7 @@ def __init__( self.exclude_muted = exclude_muted self.only_muted = only_muted - def to_dict(self) -> Dict: + def to_dict(self) -> dict: return { "observed_at": str(self.observed_at), "severities": [severity.value for severity in self.severities], @@ -138,7 +139,7 @@ def __init__( self.language = language self.origin = origin - def to_dict(self) -> Dict: + def to_dict(self) -> dict: return { "observed_at": str(self.observed_at), "ooi": self.ooi.reference, @@ -166,7 +167,7 @@ def get_report( valid_time: datetime, source_type: str, source_value: str, - store: Dict, + store: dict, filters: ReportQuery, ) -> BinaryIO: report_data = build_findings_list_from_store(store) # reuse existing dict structure @@ -185,7 +186,7 @@ def get_organization_finding_report( self, valid_time: datetime, organization_name: str, - findings_metadata: List[Dict[str, Any]], + findings_metadata: list[dict[str, Any]], filters: FindingReportQuery, ) -> BinaryIO: store = {} @@ -226,7 +227,7 @@ def organization_report_file_name(cls, organization_code: str): return f"{file_name}.pdf" -def _ooi_field_as_string(findings_grouped: Dict, store: Dict): +def _ooi_field_as_string(findings_grouped: dict, store: dict): new_findings_grouped = {} for finding_type, finding_group in findings_grouped.items(): @@ -245,7 +246,7 @@ def _ooi_field_as_string(findings_grouped: Dict, store: Dict): return new_findings_grouped -def build_findings_list_from_store(ooi_store: Dict, finding_filter: Optional[List[str]] = None) -> Dict: +def build_findings_list_from_store(ooi_store: dict, finding_filter: list[str] | None = None) -> dict: findings = [ build_finding_dict(finding_ooi, ooi_store) for finding_ooi in ooi_store.values() @@ -279,8 +280,8 @@ def build_findings_list_from_store(ooi_store: Dict, finding_filter: Optional[Lis def build_finding_dict( finding_ooi: Finding, - ooi_store: Dict[str, OOI], -) -> Dict: + ooi_store: dict[str, OOI], +) -> dict: finding_dict = get_ooi_dict(finding_ooi) finding_type_ooi = ooi_store[finding_ooi.finding_type] @@ -296,7 +297,7 @@ def build_finding_dict( return finding_dict -def build_meta(findings: List[Dict]) -> Dict: +def build_meta(findings: list[dict]) -> dict: meta = { "total": len(findings), "total_by_severity": { @@ -338,7 +339,7 @@ def build_meta(findings: List[Dict]) -> Dict: return meta -def build_finding_type_dict(finding_type_ooi: FindingType) -> Dict: +def build_finding_type_dict(finding_type_ooi: FindingType) -> dict: finding_type_dict = get_ooi_dict(finding_type_ooi) finding_type_dict["findings"] = [] diff --git a/rocky/rocky/scheduler.py b/rocky/rocky/scheduler.py index 0ae2a64a1c2..6e8dadaa7f7 100644 --- a/rocky/rocky/scheduler.py +++ b/rocky/rocky/scheduler.py @@ -6,7 +6,7 @@ from enum import Enum from http import HTTPStatus from logging import getLogger -from typing import Any, Dict, List, Optional, Union +from typing import Any import requests from django.conf import settings @@ -23,8 +23,8 @@ class Boefje(BaseModel): """Boefje representation.""" id: str - name: Optional[str] = Field(default=None) - version: Optional[str] = Field(default=None) + name: str | None = Field(default=None) + version: str | None = Field(default=None) class BoefjeMeta(BaseModel): @@ -32,27 +32,27 @@ class BoefjeMeta(BaseModel): id: uuid.UUID boefje: Boefje - input_ooi: Optional[str] = None - arguments: Dict[str, Any] + input_ooi: str | None = None + arguments: dict[str, Any] organization: str - started_at: Optional[datetime.datetime] = None - ended_at: Optional[datetime.datetime] = None + started_at: datetime.datetime | None = None + ended_at: datetime.datetime | None = None class RawData(BaseModel): id: uuid.UUID boefje_meta: BoefjeMeta - mime_types: List[Dict[str, str]] - secure_hash: Optional[str] = None - hash_retrieval_link: Optional[str] = None + mime_types: list[dict[str, str]] + secure_hash: str | None = None + hash_retrieval_link: str | None = None class Normalizer(BaseModel): """Normalizer representation.""" - id: Optional[str] = None - name: Optional[str] = None - version: Optional[str] = Field(default=None) + id: str | None = None + name: str | None = None + version: str | None = Field(default=None) class NormalizerMeta(BaseModel): @@ -66,7 +66,7 @@ class NormalizerMeta(BaseModel): class NormalizerTask(BaseModel): """NormalizerTask represent data needed for a Normalizer to run.""" - id: Optional[uuid.UUID] = None + id: uuid.UUID | None = None normalizer: Normalizer raw_data: RawData type: str = "normalizer" @@ -75,9 +75,9 @@ class NormalizerTask(BaseModel): class BoefjeTask(BaseModel): """BoefjeTask represent data needed for a Boefje to run.""" - id: Optional[uuid.UUID] = None + id: uuid.UUID | None = None boefje: Boefje - input_ooi: Optional[str] = None + input_ooi: str | None = None organization: str type: str = "boefje" @@ -88,10 +88,10 @@ class PrioritizedItem(BaseModel): representation. """ - id: Optional[uuid.UUID] = None - hash: Optional[str] = None + id: uuid.UUID | None = None + hash: str | None = None priority: int - data: SerializeAsAny[Union[BoefjeTask, NormalizerTask]] + data: SerializeAsAny[BoefjeTask | NormalizerTask] class TaskStatus(Enum): @@ -106,7 +106,7 @@ class TaskStatus(Enum): class Task(BaseModel): - id: Optional[uuid.UUID] = None + id: uuid.UUID | None = None scheduler_id: str type: str p_item: PrioritizedItem @@ -118,9 +118,9 @@ class Task(BaseModel): class PaginatedTasksResponse(BaseModel): count: int - next: Optional[str] = None - previous: Optional[str] = None - results: List[Task] + next: str | None = None + previous: str | None = None + results: list[Task] class LazyTaskList: @@ -145,7 +145,7 @@ def count(self) -> int: def __len__(self): return self.count - def __getitem__(self, key) -> List[Task]: + def __getitem__(self, key) -> list[Task]: if isinstance(key, slice): offset = key.start or 0 limit = key.stop - offset @@ -203,13 +203,13 @@ def list_tasks( def get_lazy_task_list( self, scheduler_id: str, - task_type: Optional[str] = None, - status: Optional[str] = None, - min_created_at: Optional[datetime.datetime] = None, - max_created_at: Optional[datetime.datetime] = None, - input_ooi: Optional[str] = None, - plugin_id: Optional[str] = None, - boefje_name: Optional[str] = None, + task_type: str | None = None, + status: str | None = None, + min_created_at: datetime.datetime | None = None, + max_created_at: datetime.datetime | None = None, + input_ooi: str | None = None, + plugin_id: str | None = None, + boefje_name: str | None = None, ) -> LazyTaskList: return LazyTaskList( self, @@ -223,7 +223,7 @@ def get_lazy_task_list( boefje_name=boefje_name, ) - def get_task_details(self, organization_code: str, task_id: str) -> Optional[Task]: + def get_task_details(self, organization_code: str, task_id: str) -> Task | None: res = self.session.get(f"{self._base_uri}/tasks/{task_id}") res.raise_for_status() task_details = Task.model_validate_json(res.content) @@ -257,7 +257,7 @@ def health(self) -> ServiceHealth: health_endpoint.raise_for_status() return ServiceHealth.model_validate_json(health_endpoint.content) - def get_task_stats(self, organization_code: str, task_type: str) -> Dict: + def get_task_stats(self, organization_code: str, task_type: str) -> dict: try: res = self.session.get(f"{self._base_uri}/tasks/stats/{task_type}-{organization_code}") res.raise_for_status() diff --git a/rocky/rocky/views/bytes_raw.py b/rocky/rocky/views/bytes_raw.py index dcd140fab9e..3ddbadaf90b 100644 --- a/rocky/rocky/views/bytes_raw.py +++ b/rocky/rocky/views/bytes_raw.py @@ -2,7 +2,6 @@ import logging import zipfile from io import BytesIO -from typing import Dict, List from account.mixins import OrganizationView from django.contrib import messages @@ -34,7 +33,7 @@ def get(self, request, **kwargs): return redirect(reverse("task_list", kwargs={"organization_code": self.organization.code})) -def zip_data(raws: Dict[str, bytes], raw_metas: List[Dict]) -> BytesIO: +def zip_data(raws: dict[str, bytes], raw_metas: list[dict]) -> BytesIO: zf_buffer = BytesIO() with zipfile.ZipFile(zf_buffer, "w", zipfile.ZIP_DEFLATED) as zf: diff --git a/rocky/rocky/views/finding_add.py b/rocky/rocky/views/finding_add.py index 3303339ea2b..6e623ad6ead 100644 --- a/rocky/rocky/views/finding_add.py +++ b/rocky/rocky/views/finding_add.py @@ -1,5 +1,4 @@ from datetime import datetime, timezone -from typing import Dict, List from uuid import uuid4 from django.shortcuts import redirect @@ -125,7 +124,7 @@ def form_valid(self, form): return redirect(get_ooi_url("ooi_detail", ooi_id, self.organization.code)) - def get_ooi_options(self) -> List[Dict[str, str]]: + def get_ooi_options(self) -> list[dict[str, str]]: # Query to render form options ooi_set = set(OOI_TYPES.values()).difference({Finding, FindingType}) objects = self.octopoes_api_connector.list_objects(ooi_set).items diff --git a/rocky/rocky/views/finding_list.py b/rocky/rocky/views/finding_list.py index cbfd0b18551..9917f8a74af 100644 --- a/rocky/rocky/views/finding_list.py +++ b/rocky/rocky/views/finding_list.py @@ -1,5 +1,5 @@ import logging -from typing import Any, Dict, List, Optional +from typing import Any from django.urls.base import reverse_lazy from django.utils.translation import gettext_lazy as _ @@ -14,7 +14,7 @@ logger = logging.getLogger(__name__) -def sort_by_severity_desc(findings) -> List[Dict[str, Any]]: +def sort_by_severity_desc(findings) -> list[dict[str, Any]]: # Sorting is stable (when multiple records have the same key, their original # order is preserved) so if we first sort by finding id the findings with # the same risk score will be sorted by finding id @@ -27,8 +27,8 @@ def sort_by_severity_desc(findings) -> List[Dict[str, Any]]: def generate_findings_metadata( findings: FindingList, - severity_filter: Optional[List[RiskLevelSeverity]] = None, -) -> List[Dict[str, Any]]: + severity_filter: list[RiskLevelSeverity] | None = None, +) -> list[dict[str, Any]]: findings_meta = [] for finding in findings[: FindingList.HARD_LIMIT]: diff --git a/rocky/rocky/views/health.py b/rocky/rocky/views/health.py index c4bc1a317dc..40f34b832cb 100644 --- a/rocky/rocky/views/health.py +++ b/rocky/rocky/views/health.py @@ -1,5 +1,4 @@ import logging -from typing import List from account.mixins import OrganizationView from django.http import JsonResponse @@ -101,7 +100,7 @@ def get_rocky_health(octopoes_api_connector: OctopoesAPIConnector) -> ServiceHea return rocky_health -def flatten_health(health_: ServiceHealth) -> List[ServiceHealth]: +def flatten_health(health_: ServiceHealth) -> list[ServiceHealth]: results = [health_] for sub_result in health_.results: results.extend(flatten_health(sub_result)) diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index fe3146c61db..dc6d54d05bb 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -2,7 +2,6 @@ from dataclasses import dataclass from datetime import datetime, timezone from functools import cached_property -from typing import Dict, List, Optional, Set, Tuple, Type, Union import requests.exceptions from account.mixins import OrganizationView @@ -45,9 +44,9 @@ class HydratedFinding: class OriginData(BaseModel): origin: Origin - normalizer: Optional[dict] = None - boefje: Optional[Boefje] = None - params: Optional[Dict[str, str]] = None + normalizer: dict | None = None + boefje: Boefje | None = None + params: dict[str, str] | None = None class OOIAttributeError(AttributeError): @@ -76,7 +75,7 @@ def get_observed_at(self) -> datetime: class OctopoesView(ObservedAtMixin, OrganizationView): - def get_single_ooi(self, pk: str, observed_at: Optional[datetime] = None) -> OOI: + def get_single_ooi(self, pk: str, observed_at: datetime | None = None) -> OOI: try: ref = Reference.from_str(pk) return self.octopoes_api_connector.get(ref, valid_time=observed_at) @@ -84,7 +83,7 @@ def get_single_ooi(self, pk: str, observed_at: Optional[datetime] = None) -> OOI # TODO: raise the exception but let the handling be done by the method that implements "get_single_ooi" self.handle_connector_exception(e) - def get_ooi_tree(self, pk: str, depth: int, observed_at: Optional[datetime] = None) -> ReferenceTree: + def get_ooi_tree(self, pk: str, depth: int, observed_at: datetime | None = None) -> ReferenceTree: try: ref = Reference.from_str(pk) return self.octopoes_api_connector.get_tree(ref, depth=depth, valid_time=observed_at) @@ -94,9 +93,9 @@ def get_ooi_tree(self, pk: str, depth: int, observed_at: Optional[datetime] = No def get_origins( self, reference: Reference, - valid_time: Optional[datetime], + valid_time: datetime | None, organization: Organization, - ) -> Tuple[List[OriginData], List[OriginData], List[OriginData]]: + ) -> tuple[list[OriginData], list[OriginData], list[OriginData]]: try: origins = self.octopoes_api_connector.list_origins(valid_time, result=reference) origin_data = [OriginData(origin=origin) for origin in origins] @@ -138,7 +137,7 @@ def get_depth(self, default_depth=DEPTH_DEFAULT) -> int: except ValueError: return default_depth - def get_scan_profile_inheritance(self, ooi: OOI) -> List[InheritanceSection]: + def get_scan_profile_inheritance(self, ooi: OOI) -> list[InheritanceSection]: return self.octopoes_api_connector.get_scan_profile_inheritance(ooi.reference) @@ -148,10 +147,10 @@ class OOIList: def __init__( self, octopoes_connector: OctopoesAPIConnector, - ooi_types: Set[Type[OOI]], + ooi_types: set[type[OOI]], valid_time: datetime, - scan_level: Set[ScanLevel], - scan_profile_type: Set[ScanProfileType], + scan_level: set[ScanLevel], + scan_profile_type: set[ScanProfileType], ): self.octopoes_connector = octopoes_connector self.ooi_types = ooi_types @@ -174,7 +173,7 @@ def count(self) -> int: def __len__(self): return self.count - def __getitem__(self, key: Union[int, slice]) -> List[OOI]: + def __getitem__(self, key: int | slice) -> list[OOI]: if isinstance(key, slice): offset = key.start or 0 limit = OOIList.HARD_LIMIT @@ -208,7 +207,7 @@ def __init__( self, octopoes_connector: OctopoesAPIConnector, valid_time: datetime, - severities: Set[RiskLevelSeverity], + severities: set[RiskLevelSeverity], exclude_muted: bool = True, only_muted: bool = False, ): @@ -233,7 +232,7 @@ def count(self) -> int: def __len__(self): return self.count - def __getitem__(self, key: Union[int, slice]) -> List[HydratedFinding]: + def __getitem__(self, key: int | slice) -> list[HydratedFinding]: if isinstance(key, slice): offset = key.start or 0 limit = self.HARD_LIMIT @@ -268,10 +267,10 @@ def __getitem__(self, key: Union[int, slice]) -> List[HydratedFinding]: class ConnectorFormMixin: - connector_form_class: Type[ObservedAtForm] = None + connector_form_class: type[ObservedAtForm] = None connector_form_initial = {} - def get_connector_form_kwargs(self) -> Dict: + def get_connector_form_kwargs(self) -> dict: kwargs = { "initial": self.connector_form_initial.copy(), } @@ -294,7 +293,7 @@ def get_ooi_id(self) -> str: return self.request.GET["ooi_id"] - def get_ooi(self, pk: Optional[str] = None, observed_at: Optional[datetime] = None) -> OOI: + def get_ooi(self, pk: str | None = None, observed_at: datetime | None = None) -> OOI: if pk is None: pk = self.get_ooi_id() @@ -341,7 +340,7 @@ def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) self.depth = self.get_depth() - def get_ooi(self, pk: str = None, observed_at: Optional[datetime] = None) -> OOI: + def get_ooi(self, pk: str = None, observed_at: datetime | None = None) -> OOI: if pk is None: pk = self.get_ooi_id() @@ -350,13 +349,13 @@ def get_ooi(self, pk: str = None, observed_at: Optional[datetime] = None) -> OOI return self.get_object_from_tree(pk, observed_at) - def get_object_from_tree(self, pk: str, observed_at: Optional[datetime] = None) -> OOI: + def get_object_from_tree(self, pk: str, observed_at: datetime | None = None) -> OOI: self.tree = self.get_ooi_tree(pk, self.depth, observed_at) return self.tree.store[str(self.tree.root.reference)] class SeveritiesMixin: - def get_severities(self) -> Set[RiskLevelSeverity]: + def get_severities(self) -> set[RiskLevelSeverity]: severities = set() for severity in self.request.GET.getlist("severity"): try: diff --git a/rocky/rocky/views/ooi_add.py b/rocky/rocky/views/ooi_add.py index af73c857a0c..73f1aa9aca8 100644 --- a/rocky/rocky/views/ooi_add.py +++ b/rocky/rocky/views/ooi_add.py @@ -1,5 +1,4 @@ import logging -from typing import Type from account.mixins import OrganizationView from django.http import Http404 @@ -60,7 +59,7 @@ def setup(self, request, *args, **kwargs): self.ooi_class = self.get_ooi_class() self.initial = request.GET - def get_ooi_class(self) -> Type[OOI]: + def get_ooi_class(self) -> type[OOI]: try: return type_by_name(self.kwargs["ooi_type"]) except KeyError: diff --git a/rocky/rocky/views/ooi_detail.py b/rocky/rocky/views/ooi_detail.py index cfd13c9dc27..4b6a0779737 100644 --- a/rocky/rocky/views/ooi_detail.py +++ b/rocky/rocky/views/ooi_detail.py @@ -2,7 +2,6 @@ from collections import defaultdict from datetime import datetime, timezone from enum import Enum -from typing import Optional from django.contrib import messages from django.core.paginator import Page, Paginator @@ -97,7 +96,7 @@ def handle_page_action(self, action: str) -> bool: messages.add_message(self.request, messages.ERROR, f"{action} failed: '{exception}'") return self.get(self.request, status_code=500, *self.args, **self.kwargs) - def get_current_ooi(self) -> Optional[OOI]: + def get_current_ooi(self) -> OOI | None: # self.ooi is already the current state of the OOI if self.get_observed_at().date() == datetime.utcnow().date(): return self.ooi diff --git a/rocky/rocky/views/ooi_detail_related_object.py b/rocky/rocky/views/ooi_detail_related_object.py index 84706968131..89f1373972a 100644 --- a/rocky/rocky/views/ooi_detail_related_object.py +++ b/rocky/rocky/views/ooi_detail_related_object.py @@ -1,5 +1,4 @@ from collections import Counter -from typing import Dict, List, Optional, Set, Tuple, Type from django.shortcuts import redirect from django.urls import reverse @@ -35,7 +34,7 @@ def get_related_objects(self, observed_at): class OOIFindingManager(SingleOOITreeMixin): - def get_findings(self) -> List[Finding]: + def get_findings(self) -> list[Finding]: findings = [] for relation in self.tree.root.children.values(): for child in relation: @@ -47,18 +46,18 @@ def get_findings(self) -> List[Finding]: def count_findings_per_severity(self) -> Counter: counter = Counter({severity: 0 for severity in RiskLevelSeverity}) for finding in self.get_findings(): - finding_type: Optional[FindingType] = self.tree.store.get(str(finding.finding_type), None) + finding_type: FindingType | None = self.tree.store.get(str(finding.finding_type), None) if finding_type is not None: counter.update([finding_type.risk_severity]) else: counter.update([RiskLevelSeverity.UNKNOWN]) return counter - def get_finding_details_sorted_by_score_desc(self) -> List[Tuple[Finding, FindingType]]: + def get_finding_details_sorted_by_score_desc(self) -> list[tuple[Finding, FindingType]]: finding_details = self.get_finding_details() return list(sorted(finding_details, key=lambda x: x[1].risk_score, reverse=True)) - def get_finding_details(self) -> List[Tuple[Finding, FindingType]]: + def get_finding_details(self) -> list[tuple[Finding, FindingType]]: return [(finding, self.tree.store[str(finding.finding_type)]) for finding in self.get_findings()] @@ -81,7 +80,7 @@ def get(self, request, *args, **kwargs): return super().get(request, *args, **kwargs) - def split_ooi_type_choice(self, ooi_type_choice) -> Dict[str, str]: + def split_ooi_type_choice(self, ooi_type_choice) -> dict[str, str]: ooi_type = ooi_type_choice.split("|", 1) return { @@ -106,7 +105,7 @@ def ooi_add_url(self, ooi: OOI, ooi_type: str, ooi_relation: str = "ooi_id") -> return url_with_querystring(path, **query_params) - def get_datamodel(self) -> Dict[str, Dict[str, Set[Type[OOI]]]]: + def get_datamodel(self) -> dict[str, dict[str, set[type[OOI]]]]: datamodel = {} for ooi_name, ooi_ in OOI_TYPES.items(): datamodel[ooi_name] = { @@ -114,7 +113,7 @@ def get_datamodel(self) -> Dict[str, Dict[str, Set[Type[OOI]]]]: } return datamodel - def get_foreign_relations(self, ooi_class: Type[OOI]) -> List[Tuple[str, str]]: + def get_foreign_relations(self, ooi_class: type[OOI]) -> list[tuple[str, str]]: datamodel = self.get_datamodel() ret = [] @@ -124,9 +123,9 @@ def get_foreign_relations(self, ooi_class: Type[OOI]) -> List[Tuple[str, str]]: ret.append((foreign_ooi_class_name, attr_name)) return ret - def get_ooi_types_input_values(self, ooi: OOI) -> List[Dict[str, str]]: + def get_ooi_types_input_values(self, ooi: OOI) -> list[dict[str, str]]: # to populate the "add object" dropdown with related OOI's - if isinstance(ooi, (Finding, FindingType)): + if isinstance(ooi, Finding | FindingType): return [] foreign_relations = self.get_foreign_relations(ooi.__class__) diff --git a/rocky/rocky/views/ooi_findings.py b/rocky/rocky/views/ooi_findings.py index ab7cdc5515b..9f4fb941ae6 100644 --- a/rocky/rocky/views/ooi_findings.py +++ b/rocky/rocky/views/ooi_findings.py @@ -1,5 +1,3 @@ -from typing import List - from django.utils.translation import gettext_lazy as _ from tools.forms.base import ObservedAtForm from tools.view_helpers import Breadcrumb, get_ooi_url @@ -12,7 +10,7 @@ class OOIFindingListView(OOIFindingManager, BaseOOIDetailView): template_name = "oois/ooi_findings.html" connector_form_class = ObservedAtForm - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append(self.get_last_breadcrumb()) return breadcrumbs diff --git a/rocky/rocky/views/ooi_list.py b/rocky/rocky/views/ooi_list.py index 13c74c78624..3e2fbc8f381 100644 --- a/rocky/rocky/views/ooi_list.py +++ b/rocky/rocky/views/ooi_list.py @@ -2,7 +2,6 @@ import json from datetime import datetime, timezone from enum import Enum -from typing import List from django.contrib import messages from django.http import Http404, HttpRequest, HttpResponse @@ -86,7 +85,7 @@ def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: return self.get(request, status=404, *args, **kwargs) def _set_scan_profiles( - self, selected_oois: List[Reference], level: CUSTOM_SCAN_LEVEL, request: HttpRequest, *args, **kwargs + self, selected_oois: list[Reference], level: CUSTOM_SCAN_LEVEL, request: HttpRequest, *args, **kwargs ) -> HttpResponse: try: self.raise_clearance_levels(selected_oois, level.value) @@ -152,7 +151,7 @@ def _set_scan_profiles( return self.get(request, *args, **kwargs) def _set_oois_to_inherit( - self, selected_oois: List[Reference], request: HttpRequest, *args, **kwargs + self, selected_oois: list[Reference], request: HttpRequest, *args, **kwargs ) -> HttpResponse: scan_profiles = [EmptyScanProfile(reference=Reference.from_str(ooi)) for ooi in selected_oois] @@ -180,7 +179,7 @@ def _set_oois_to_inherit( ) return self.get(request, *args, **kwargs) - def _delete_oois(self, selected_oois: List[Reference], request: HttpRequest, *args, **kwargs) -> HttpResponse: + def _delete_oois(self, selected_oois: list[Reference], request: HttpRequest, *args, **kwargs) -> HttpResponse: connector = self.octopoes_api_connector valid_time = datetime.now(timezone.utc) diff --git a/rocky/rocky/views/ooi_report.py b/rocky/rocky/views/ooi_report.py index a8dd12e8496..1557f1101b5 100644 --- a/rocky/rocky/views/ooi_report.py +++ b/rocky/rocky/views/ooi_report.py @@ -1,5 +1,5 @@ from datetime import datetime -from typing import Any, List, Set, Type +from typing import Any from account.mixins import OrganizationView from django.contrib import messages @@ -160,12 +160,12 @@ def get(self, request, *args, **kwargs): class Report(OrganizationView): - boefjes_required: Set = None # type: ignore - boefjes_optional: Set = None # type: ignore + boefjes_required: set = None # type: ignore + boefjes_optional: set = None # type: ignore start_ooi: OOI = None # type: ignore - allowed_ooi_types: List[Type[OOI]] = None # type: ignore - allowed_finding_types: List[str] = None # type: ignore - boefjes: List = [] + allowed_ooi_types: list[type[OOI]] = None # type: ignore + allowed_finding_types: list[str] = None # type: ignore + boefjes: list = [] @classmethod def get_finding_filter(cls): diff --git a/rocky/rocky/views/ooi_tree.py b/rocky/rocky/views/ooi_tree.py index 000df00aed9..be01336b74c 100644 --- a/rocky/rocky/views/ooi_tree.py +++ b/rocky/rocky/views/ooi_tree.py @@ -1,5 +1,3 @@ -from typing import List - from django.utils.translation import gettext_lazy as _ from tools.forms.ooi import OoiTreeSettingsForm from tools.ooi_helpers import create_object_tree_item_from_ref, filter_ooi_tree, get_ooi_types_from_tree @@ -33,7 +31,7 @@ def get_connector_form_kwargs(self): return kwargs - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append(self.get_last_breadcrumb()) return breadcrumbs diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index 6fcdbb63aef..f9b192b9f81 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -1,5 +1,5 @@ from time import sleep -from typing import Any, Dict, List, Set, Type +from typing import Any from django import http from django.shortcuts import redirect @@ -43,7 +43,7 @@ def setup(self, request, *args, **kwargs): self.clearance_levels = request.GET.getlist("clearance_level", []) self.clearance_types = request.GET.getlist("clearance_type", []) - def get_active_filters(self) -> Dict[str, str]: + def get_active_filters(self) -> dict[str, str]: active_filters = {} if self.filtered_ooi_types: active_filters[_("OOI types: ")] = ", ".join(self.filtered_ooi_types) @@ -54,17 +54,17 @@ def get_active_filters(self) -> Dict[str, str]: active_filters[_("Clearance type: ")] = ", ".join(self.clearance_types) return active_filters - def get_ooi_scan_levels(self) -> Set[ScanLevel]: + def get_ooi_scan_levels(self) -> set[ScanLevel]: if not self.clearance_levels: return self.scan_levels return {ScanLevel(int(cl)) for cl in self.clearance_levels} - def get_ooi_profile_types(self) -> Set[ScanProfileType]: + def get_ooi_profile_types(self) -> set[ScanProfileType]: if not self.clearance_types: return self.scan_profile_types return {ScanProfileType(ct) for ct in self.clearance_types} - def get_ooi_types(self) -> Set[Type[OOI]]: + def get_ooi_types(self) -> set[type[OOI]]: if not self.filtered_ooi_types: return self.ooi_types return {type_by_name(t) for t in self.filtered_ooi_types if t not in _EXCLUDED_OOI_TYPES} @@ -119,7 +119,7 @@ def get_context_data(self, **kwargs): return context - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: if isinstance(self.ooi, Finding): start = { "url": reverse("finding_list", kwargs={"organization_code": self.organization.code}), @@ -140,7 +140,7 @@ def build_breadcrumbs(self) -> List[Breadcrumb]: class BaseOOIFormView(SingleOOIMixin, FormView): - ooi_class: Type[OOI] = None + ooi_class: type[OOI] = None form_class = OOIForm def get_ooi_class(self): @@ -183,7 +183,7 @@ def form_valid(self, form): def get_ooi_success_url(self, ooi: OOI) -> str: return get_ooi_url("ooi_detail", ooi.primary_key, self.organization.code) - def get_readonly_fields(self) -> List: + def get_readonly_fields(self) -> list: if not hasattr(self, "ooi"): return [] diff --git a/rocky/rocky/views/organization_list.py b/rocky/rocky/views/organization_list.py index 034e3ff9132..6bf12f1956a 100644 --- a/rocky/rocky/views/organization_list.py +++ b/rocky/rocky/views/organization_list.py @@ -1,5 +1,3 @@ -from typing import List - from account.models import KATUser from django.db.models import Count from django.views.generic import ListView @@ -13,7 +11,7 @@ class OrganizationListView( ): template_name = "organizations/organization_list.html" - def get_queryset(self) -> List[Organization]: + def get_queryset(self) -> list[Organization]: user: KATUser = self.request.user return ( Organization.objects.annotate(member_count=Count("members")) diff --git a/rocky/rocky/views/scan_profile.py b/rocky/rocky/views/scan_profile.py index 693227d8991..f7d98a407fd 100644 --- a/rocky/rocky/views/scan_profile.py +++ b/rocky/rocky/views/scan_profile.py @@ -1,5 +1,5 @@ from datetime import datetime, timezone -from typing import Any, Dict, List +from typing import Any from django.contrib import messages from django.shortcuts import redirect @@ -27,7 +27,7 @@ class ScanProfileDetailView(OOIDetailView, FormView): template_name = "scan_profiles/scan_profile_detail.html" form_class = SetClearanceLevelForm - def get_context_data(self, **kwargs) -> Dict[str, Any]: + def get_context_data(self, **kwargs) -> dict[str, Any]: context = super().get_context_data(**kwargs) context["mandatory_fields"] = get_mandatory_fields(self.request) context["user"] = self.organization_member @@ -136,7 +136,7 @@ def post(self, request, *args, **kwargs): ) return redirect(get_ooi_url("scan_profile_detail", self.ooi.primary_key, self.organization.code)) - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( { diff --git a/rocky/rocky/views/scans.py b/rocky/rocky/views/scans.py index 68f9d7895c2..b94d5e2e893 100644 --- a/rocky/rocky/views/scans.py +++ b/rocky/rocky/views/scans.py @@ -1,5 +1,4 @@ from logging import getLogger -from typing import List from django.views.generic import TemplateView from katalogus.client import get_katalogus @@ -11,7 +10,7 @@ class ScanListView(ObjectsBreadcrumbsMixin, TemplateView): template_name = "scan.html" - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs = super().build_breadcrumbs() breadcrumbs.append( diff --git a/rocky/rocky/views/upload_csv.py b/rocky/rocky/views/upload_csv.py index a2fd3a71308..7fc4b930f90 100644 --- a/rocky/rocky/views/upload_csv.py +++ b/rocky/rocky/views/upload_csv.py @@ -1,7 +1,7 @@ import csv import io from datetime import datetime, timezone -from typing import Any, ClassVar, Dict +from typing import Any, ClassVar from uuid import uuid4 from account.mixins import OrganizationPermissionRequiredMixin, OrganizationView @@ -49,8 +49,8 @@ class UploadCSV(OrganizationPermissionRequiredMixin, OrganizationView, FormView) template_name = "upload_csv.html" form_class = UploadOOICSVForm permission_required = "tools.can_scan_organization" - reference_cache: Dict[str, Any] = {"Network": {"internet": Network(name="internet")}} - ooi_types: ClassVar[Dict[str, Any]] = { + reference_cache: dict[str, Any] = {"Network": {"internet": Network(name="internet")}} + ooi_types: ClassVar[dict[str, Any]] = { "Hostname": {"type": Hostname}, "URL": {"type": URL}, "Network": {"type": Network, "default": "internet", "argument": "name"}, @@ -100,7 +100,7 @@ def get_or_create_reference(self, ooi_type_name: str, value: str): return ooi - def get_ooi_from_csv(self, ooi_type_name: str, values: Dict[str, str]): + def get_ooi_from_csv(self, ooi_type_name: str, values: dict[str, str]): key = "clearance" level = int(values[key]) if key in values and values[key] in CLEARANCE_VALUES else None ooi_type = self.ooi_types[ooi_type_name]["type"] diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 913ed421af4..5bfc48b1891 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -6,7 +6,6 @@ from ipaddress import IPv4Address, IPv6Address from os import urandom from pathlib import Path -from typing import Dict, List, Optional, Union from unittest.mock import MagicMock, patch from uuid import UUID @@ -636,15 +635,15 @@ def get_stub_path(file_name: str) -> Path: return Path(__file__).parent / "stubs" / file_name -def get_boefjes_data() -> Dict: +def get_boefjes_data() -> dict: return json.loads(get_stub_path("katalogus_boefjes.json").read_text()) -def get_normalizers_data() -> Dict: +def get_normalizers_data() -> dict: return json.loads(get_stub_path("katalogus_normalizers.json").read_text()) -def get_plugins_data() -> Dict: +def get_plugins_data() -> dict: return get_boefjes_data() + get_normalizers_data() @@ -698,27 +697,27 @@ def mock_scheduler_client_task_list(mocker): class MockOctopoesAPIConnector: - oois: Dict[Reference, OOI] - queries: Dict[str, Dict[Optional[Union[Reference, str]], List[OOI]]] + oois: dict[Reference, OOI] + queries: dict[str, dict[Reference | str | None, list[OOI]]] valid_time: datetime def __init__(self, valid_time: datetime): self.valid_time = valid_time - def get(self, reference: Reference, valid_time: Optional[datetime] = None) -> OOI: + def get(self, reference: Reference, valid_time: datetime | None = None) -> OOI: return self.oois[reference] def query( self, path: str, valid_time: datetime, - source: Optional[Union[Reference, str]] = None, + source: Reference | str | None = None, offset: int = 0, limit: int = 50, - ) -> List[OOI]: + ) -> list[OOI]: return self.queries[path][source] - def get_history(self, reference: Reference) -> List[TransactionRecord]: + def get_history(self, reference: Reference) -> list[TransactionRecord]: return [ TransactionRecord( txTime=self.valid_time, @@ -730,12 +729,12 @@ def get_history(self, reference: Reference) -> List[TransactionRecord]: def list_origins( self, - valid_time: Optional[datetime] = None, - source: Optional[Reference] = None, - result: Optional[Reference] = None, - task_id: Optional[UUID] = None, - origin_type: Optional[OriginType] = None, - ) -> List[Origin]: + valid_time: datetime | None = None, + source: Reference | None = None, + result: Reference | None = None, + task_id: UUID | None = None, + origin_type: OriginType | None = None, + ) -> list[Origin]: return [] diff --git a/rocky/tests/test_api_organization.py b/rocky/tests/test_api_organization.py index fdb26f987fd..645ba1c1376 100644 --- a/rocky/tests/test_api_organization.py +++ b/rocky/tests/test_api_organization.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any from unittest.mock import patch import pytest @@ -25,7 +25,7 @@ pytestmark = pytest.mark.django_db -def express_organization(organization: Organization) -> Dict[str, Any]: +def express_organization(organization: Organization) -> dict[str, Any]: return { "id": organization.id, "name": organization.name, diff --git a/rocky/tools/add_ooi_information.py b/rocky/tools/add_ooi_information.py index 999ee8b6c3a..5459d022923 100644 --- a/rocky/tools/add_ooi_information.py +++ b/rocky/tools/add_ooi_information.py @@ -2,7 +2,6 @@ import logging from dataclasses import dataclass from itertools import product -from typing import List, Optional, Tuple import requests from bs4 import BeautifulSoup @@ -15,9 +14,9 @@ @dataclass class _Service: name: str - port: Optional[int] = None - transport_protocol: Optional[str] = None - description: Optional[str] = None + port: int | None = None + transport_protocol: str | None = None + description: str | None = None @dataclass @@ -27,7 +26,7 @@ class _PortInfo: description: str -def iana_service_table(search_query: str) -> List[_Service]: +def iana_service_table(search_query: str) -> list[_Service]: services = [] response = requests.get( @@ -61,7 +60,7 @@ def iana_service_table(search_query: str) -> List[_Service]: return services -def service_info(value) -> Tuple[str, str]: +def service_info(value) -> tuple[str, str]: """Provides information about IP Services such as common assigned ports for certain protocols and descriptions""" services = iana_service_table(value) source = "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml" @@ -145,7 +144,7 @@ def _map_usage_value(value: str) -> bool: return value is not None and value and value != "no" -def wiki_port_tables() -> List[_PortInfo]: +def wiki_port_tables() -> list[_PortInfo]: response = requests.get("https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers", timeout=30) soup = BeautifulSoup(response.text, "html.parser") @@ -174,7 +173,7 @@ def wiki_port_tables() -> List[_PortInfo]: return items -def port_info(number: str, protocol: str) -> Tuple[str, str]: +def port_info(number: str, protocol: str) -> tuple[str, str]: """Provides possible or common protocols for operation of network applications behind TCP and UDP ports""" items = wiki_port_tables() source = "https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers" diff --git a/rocky/tools/forms/base.py b/rocky/tools/forms/base.py index 5857b0764b0..c6c69a98f19 100644 --- a/rocky/tools/forms/base.py +++ b/rocky/tools/forms/base.py @@ -1,6 +1,6 @@ import contextlib import datetime -from typing import Any, Dict, List, Optional, Union +from typing import Any from django import forms from django.forms import Widget @@ -24,14 +24,14 @@ def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.label_suffix = "" # Removes : as label suffix - def set_choices_for_field(self, field: str, choices: Union[Choices, ChoicesGroups]) -> None: + def set_choices_for_field(self, field: str, choices: Choices | ChoicesGroups) -> None: if field in self.fields: self.fields[field].choices = choices - def set_choices_for_widget(self, field: str, choices: Union[Choices, ChoicesGroups]) -> None: + def set_choices_for_widget(self, field: str, choices: Choices | ChoicesGroups) -> None: self.fields[field].widget.choices = choices - def set_required_options_for_widget(self, field: str, required_options: List[str]) -> None: + def set_required_options_for_widget(self, field: str, required_options: list[str]) -> None: """For multiselect widgets, set the required options.""" self.fields[field].widget.required_options = required_options @@ -89,14 +89,14 @@ class CheckboxGroup(forms.CheckboxSelectMultiple): input_type = "checkbox" template_name = "forms/widgets/checkbox_group_columns.html" option_template_name = "forms/widgets/checkbox_option.html" - required_options: List[str] = None + required_options: list[str] = None toggle_all_button = None wrap_label = True def __init__( self, - required_options: Optional[List[str]] = None, - toggle_all_button: Optional[bool] = None, + required_options: list[str] | None = None, + toggle_all_button: bool | None = None, *args, **kwargs, ) -> None: @@ -105,12 +105,12 @@ def __init__( self.toggle_all_button = toggle_all_button self.required_options = required_options or [] - def get_context(self, name, value, attrs) -> Dict[str, Any]: + def get_context(self, name, value, attrs) -> dict[str, Any]: context = super().get_context(name, value, attrs) context["toggle_all_button"] = self.toggle_all_button return context - def create_option(self, *arg, **kwargs) -> Dict[str, Any]: + def create_option(self, *arg, **kwargs) -> dict[str, Any]: option = super().create_option(*arg, **kwargs) option["wrap_label"] = self.wrap_label option["attrs"]["checked"] = self.is_required_option(option["value"]) @@ -201,6 +201,6 @@ def format_value(self, value): """Return selected values as a list.""" if value is None and self.allow_multiple_selected: return [] - if not isinstance(value, (tuple, list)): + if not isinstance(value, tuple | list): value = [value] return [str(v) if v is not None else "" for v in value] diff --git a/rocky/tools/forms/boefje.py b/rocky/tools/forms/boefje.py index 0d5b9ab66ca..1efd145cf09 100644 --- a/rocky/tools/forms/boefje.py +++ b/rocky/tools/forms/boefje.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, List, Union +from typing import Any from django import forms from django.core.exceptions import ValidationError @@ -17,12 +17,12 @@ class CheckboxGroupBoefjeTiles(CheckboxGroup): def __init__(self): super().__init__() - self.boefjes: List[Boefje] = self.attrs.get("boefjes", []) + self.boefjes: list[Boefje] = self.attrs.get("boefjes", []) self.organization = self.attrs.get( "organization", ) - def create_option(self, *arg, **kwargs) -> Dict[str, Any]: + def create_option(self, *arg, **kwargs) -> dict[str, Any]: option = super().create_option(*arg, **kwargs) option["boefje"] = [boefje for boefje in self.boefjes if boefje["id"] == option["value"]][0] return option @@ -41,7 +41,7 @@ class SelectBoefjeForm(BaseRockyForm): def __init__( self, - boefjes: List[Boefje], + boefjes: list[Boefje], organization: Organization, *args, **kwargs, @@ -69,7 +69,7 @@ def _build_form(self) -> None: self.fields["boefje"].widget.boefjes = self.boefjes self.fields["boefje"].widget.organization = self.organization - def _get_choices(self, boefjes: List[Boefje]) -> Union[Choices, ChoicesGroups]: + def _get_choices(self, boefjes: list[Boefje]) -> Choices | ChoicesGroups: return [("Boefje", [self._choice_from_boefje(item["boefje"]) for item in boefjes])] def _choice_from_boefje(self, boefje: Boefje) -> Choice: diff --git a/rocky/tools/forms/finding_type.py b/rocky/tools/forms/finding_type.py index 3716600b53c..b619d9fec76 100644 --- a/rocky/tools/forms/finding_type.py +++ b/rocky/tools/forms/finding_type.py @@ -1,5 +1,4 @@ import datetime -from typing import Dict, List from django import forms from django.core.exceptions import ValidationError @@ -141,7 +140,7 @@ class FindingAddForm(BaseRockyForm): def __init__( self, connector: OctopoesAPIConnector, - ooi_list: List[Dict[str, str]], + ooi_list: list[dict[str, str]], *args, **kwargs, ): @@ -149,7 +148,7 @@ def __init__( super().__init__(*args, **kwargs) self.set_choices_for_field("ooi_id", ooi_list) - def set_choices_for_field(self, field, choices: List[Dict[str, str]]): + def set_choices_for_field(self, field, choices: list[dict[str, str]]): self.fields[field].widget.choices = choices def clean_date(self): diff --git a/rocky/tools/forms/ooi.py b/rocky/tools/forms/ooi.py index cf1898898fd..1fdf54e8e57 100644 --- a/rocky/tools/forms/ooi.py +++ b/rocky/tools/forms/ooi.py @@ -1,4 +1,4 @@ -from typing import Any, List, Tuple +from typing import Any from django import forms from django.utils.translation import gettext_lazy as _ @@ -35,11 +35,11 @@ class OoiTreeSettingsForm(OOIReportSettingsForm): required=False, ) - def __init__(self, ooi_types: List[str], *args, **kwargs): + def __init__(self, ooi_types: list[str], *args, **kwargs): super().__init__(*args, **kwargs) self.set_ooi_types(ooi_types) - def set_ooi_types(self, ooi_types: List[str]) -> None: + def set_ooi_types(self, ooi_types: list[str]) -> None: if not ooi_types: self.fields.pop("ooi_type", None) return @@ -62,7 +62,7 @@ class SelectOOIForm(BaseRockyForm): def __init__( self, - oois: List[OOI], + oois: list[OOI], organization_code: str, mandatory_fields: list = None, *args, @@ -77,7 +77,7 @@ def __init__( self.fields["ooi"].initial = self.fields["ooi"].choices[0][0] @staticmethod - def _to_choice(ooi: OOI) -> Tuple[str, Any]: + def _to_choice(ooi: OOI) -> tuple[str, Any]: return str(ooi), ( ooi, ooi, diff --git a/rocky/tools/forms/ooi_form.py b/rocky/tools/forms/ooi_form.py index 11abf437a61..c48d7f7447b 100644 --- a/rocky/tools/forms/ooi_form.py +++ b/rocky/tools/forms/ooi_form.py @@ -1,7 +1,7 @@ from enum import Enum from inspect import isclass from ipaddress import IPv4Address, IPv6Address -from typing import Dict, List, Literal, Optional, Type, Union, cast, get_args, get_origin +from typing import Literal, Union, cast, get_args, get_origin from django import forms from django.utils.translation import gettext_lazy as _ @@ -18,7 +18,7 @@ class OOIForm(BaseRockyForm): - def __init__(self, ooi_class: Type[OOI], connector: OctopoesAPIConnector, *args, **kwargs): + def __init__(self, ooi_class: type[OOI], connector: OctopoesAPIConnector, *args, **kwargs): super().__init__(*args, **kwargs) self.ooi_class = ooi_class self.api_connector = connector @@ -31,13 +31,13 @@ def __init__(self, ooi_class: Type[OOI], connector: OctopoesAPIConnector, *args, def clean(self): return {key: value for key, value in super().clean().items() if value} - def get_fields(self) -> Dict[str, forms.fields.Field]: + def get_fields(self) -> dict[str, forms.fields.Field]: return self.generate_form_fields() def generate_form_fields( self, - hidden_ooi_fields: Dict[str, str] = None, - ) -> Dict[str, forms.fields.Field]: + hidden_ooi_fields: dict[str, str] = None, + ) -> dict[str, forms.fields.Field]: fields = {} for name, field in self.ooi_class.model_fields.items(): annotation = field.annotation @@ -63,7 +63,7 @@ def generate_form_fields( fields[name] = generate_ip_field(field) elif annotation == AnyUrl: fields[name] = generate_url_field(field) - elif annotation == Dict or annotation == Dict[str, str] or annotation == List[str]: + elif annotation == dict or annotation == dict[str, str] or annotation == list[str]: fields[name] = forms.JSONField(**default_attrs) elif annotation == int or (hasattr(annotation, "__args__") and int in annotation.__args__): fields[name] = forms.IntegerField(**default_attrs) @@ -72,7 +72,7 @@ def generate_form_fields( elif self.ooi_class == Question and issubclass(annotation, str) and name == "json_schema": fields[name] = forms.CharField(**default_attrs) elif isclass(annotation) and issubclass(annotation, str) or optional_type is str: - if name in self.ooi_class.__annotations__ and self.ooi_class.__annotations__[name] == Dict[str, str]: + if name in self.ooi_class.__annotations__ and self.ooi_class.__annotations__[name] == dict[str, str]: fields[name] = forms.JSONField(**default_attrs) else: fields[name] = forms.CharField( @@ -86,8 +86,8 @@ def generate_select_ooi_field( api_connector: OctopoesAPIConnector, name: str, field: FieldInfo, - related_ooi_type: Type[OOI], - initial: Optional[str] = None, + related_ooi_type: type[OOI], + initial: str | None = None, ) -> forms.fields.Field: # field is a relation, query all objects, and build select default_attrs = default_field_options(name, field) @@ -140,7 +140,7 @@ def generate_url_field(field: FieldInfo) -> forms.fields.Field: return field -def default_field_options(name: str, field_info: FieldInfo) -> Dict[str, Union[str, bool]]: +def default_field_options(name: str, field_info: FieldInfo) -> dict[str, str | bool]: return { "label": name, "required": field_info.is_required(), diff --git a/rocky/tools/forms/settings.py b/rocky/tools/forms/settings.py index 41a64a519ea..4774f022942 100644 --- a/rocky/tools/forms/settings.py +++ b/rocky/tools/forms/settings.py @@ -1,13 +1,13 @@ -from typing import Any, List, Tuple +from typing import Any from django.utils.translation import gettext_lazy as _ from tools.enums import SCAN_LEVEL -Choice = Tuple[Any, str] -Choices = List[Choice] -ChoicesGroup = Tuple[str, Choices] -ChoicesGroups = List[ChoicesGroup] +Choice = tuple[Any, str] +Choices = list[Choice] +ChoicesGroup = tuple[str, Choices] +ChoicesGroups = list[ChoicesGroup] BLANK_CHOICE = ("", _("--- Please select one of the available options ----")) FILTER_BLANK_CHOICE = ("", _("--- Show all ----")) diff --git a/rocky/tools/forms/upload_raw.py b/rocky/tools/forms/upload_raw.py index 03fe3d7db3f..8ecc1054a3f 100644 --- a/rocky/tools/forms/upload_raw.py +++ b/rocky/tools/forms/upload_raw.py @@ -1,5 +1,3 @@ -from typing import Set - from django import forms from django.utils.safestring import mark_safe from django.utils.translation import gettext as _ @@ -24,7 +22,7 @@ class UploadRawForm(forms.Form): allow_empty_file=False, ) - def clean_mime_types(self) -> Set[str]: + def clean_mime_types(self) -> set[str]: mime_types = self.cleaned_data["mime_types"] return set([mime_type.strip() for mime_type in mime_types.split(",") if mime_type.strip()]) diff --git a/rocky/tools/management/commands/generate_report.py b/rocky/tools/management/commands/generate_report.py index 417fcb5b631..9442094cff9 100644 --- a/rocky/tools/management/commands/generate_report.py +++ b/rocky/tools/management/commands/generate_report.py @@ -2,7 +2,7 @@ from datetime import datetime, timezone from logging import getLogger from pathlib import Path -from typing import Any, Dict, List, Optional +from typing import Any from django.conf import settings from django.contrib.auth import get_user_model @@ -75,7 +75,7 @@ def handle(self, *args, **options): self.stdout.buffer.write(report.read()) @staticmethod - def get_findings_metadata(organization, valid_time, severities) -> List[Dict[str, Any]]: + def get_findings_metadata(organization, valid_time, severities) -> list[dict[str, Any]]: findings = FindingList( OctopoesAPIConnector(settings.OCTOPOES_API, organization.code), valid_time, @@ -85,7 +85,7 @@ def get_findings_metadata(organization, valid_time, severities) -> List[Dict[str return generate_findings_metadata(findings, severities) @staticmethod - def get_organization(**options) -> Optional[Organization]: + def get_organization(**options) -> Organization | None: if options["code"] and options["id"]: return None diff --git a/rocky/tools/management/commands/setup_test_users.py b/rocky/tools/management/commands/setup_test_users.py index 7e5a47685b3..27ddd37c226 100644 --- a/rocky/tools/management/commands/setup_test_users.py +++ b/rocky/tools/management/commands/setup_test_users.py @@ -1,5 +1,3 @@ -from typing import Dict, Optional - from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.core.management import BaseCommand @@ -39,7 +37,7 @@ def add_superuser(email: str, password: str): add_user(user_kwargs) -def add_test_user(email: str, password: str, group_name: Optional[str] = None): +def add_test_user(email: str, password: str, group_name: str | None = None): user_kwargs = { "email": email, "password": password, @@ -49,7 +47,7 @@ def add_test_user(email: str, password: str, group_name: Optional[str] = None): add_user(user_kwargs, group_name) -def add_user(user_kwargs: Dict[str, str], group_name: Optional[str] = None): +def add_user(user_kwargs: dict[str, str], group_name: str | None = None): """ Creates a test user with the given user_kwargs. User is optionally added to group group_name. diff --git a/rocky/tools/models.py b/rocky/tools/models.py index a94338afdb9..1dbf3e13e7c 100644 --- a/rocky/tools/models.py +++ b/rocky/tools/models.py @@ -1,7 +1,7 @@ import datetime import logging +from collections.abc import Iterable from functools import cached_property -from typing import Iterable, Set import tagulous.models from django.conf import settings @@ -237,7 +237,7 @@ class STATUSES(models.TextChoices): ) @cached_property - def all_permissions(self) -> Set[str]: + def all_permissions(self) -> set[str]: if self.user.is_active and self.user.is_superuser: # Superuser always has all permissions return { diff --git a/rocky/tools/ooi_helpers.py b/rocky/tools/ooi_helpers.py index 2c1b33377d0..e8b86c049d8 100644 --- a/rocky/tools/ooi_helpers.py +++ b/rocky/tools/ooi_helpers.py @@ -1,6 +1,6 @@ from datetime import datetime, timezone from enum import Enum -from typing import Any, Dict, List, Optional, Tuple, Union +from typing import Any from uuid import uuid4 from django.contrib.auth import get_user_model @@ -40,14 +40,14 @@ def format_value(value: Any) -> str: return value -def format_display(data: Dict, ignore: Optional[List] = None) -> Dict[str, str]: +def format_display(data: dict, ignore: list | None = None) -> dict[str, str]: if ignore is None: ignore = [] return {format_attr_name(k): format_value(v) for k, v in data.items() if k not in ignore} -def get_knowledge_base_data_for_ooi_store(ooi_store) -> Dict[str, Dict]: +def get_knowledge_base_data_for_ooi_store(ooi_store) -> dict[str, dict]: knowledge_base = {} for ooi in ooi_store.values(): @@ -58,7 +58,7 @@ def get_knowledge_base_data_for_ooi_store(ooi_store) -> Dict[str, Dict]: return knowledge_base -def get_knowledge_base_data_for_ooi(ooi: OOI) -> Dict: +def get_knowledge_base_data_for_ooi(ooi: OOI) -> dict: knowledge_base_data = {} # Knowledge base data @@ -80,12 +80,12 @@ def get_knowledge_base_data_for_ooi(ooi: OOI) -> Dict: def process_value(value: Any) -> Any: if isinstance(value, Enum): return value.value - if isinstance(value, (int, float)): + if isinstance(value, int | float): return value return str(value) if value else None -def get_ooi_dict(ooi: OOI) -> Dict: +def get_ooi_dict(ooi: OOI) -> dict: ooi_dict = { "id": ooi.primary_key, "ooi_type": ooi.get_ooi_type(), @@ -103,7 +103,7 @@ def get_ooi_dict(ooi: OOI) -> Dict: return ooi_dict -def get_tree_meta(tree_node: Dict, depth: int, location: str) -> Dict: +def get_tree_meta(tree_node: dict, depth: int, location: str) -> dict: tree_meta = { "depth": depth, "location": location, @@ -128,12 +128,12 @@ def get_tree_meta(tree_node: Dict, depth: int, location: str) -> Dict: def create_object_tree_item_from_ref( reference_node: ReferenceNode, - ooi_store: Dict[str, OOI], - knowledge_base: Optional[Dict[str, Dict]] = None, + ooi_store: dict[str, OOI], + knowledge_base: dict[str, dict] | None = None, depth=0, position=1, location="loc", -) -> Dict: +) -> dict: depth = sum([depth, 1]) location = location + "-" + str(position) @@ -181,7 +181,7 @@ def get_ooi_types_from_tree(ooi, include_self=True): return sorted(types) -def filter_ooi_tree(ooi_node: Dict, show_types=[], hide_types=[]) -> Dict: +def filter_ooi_tree(ooi_node: dict, show_types=[], hide_types=[]) -> dict: if not show_types and not hide_types: return ooi_node @@ -223,14 +223,7 @@ def include_type(ooi_type): def get_finding_type_from_finding(finding: Finding) -> FindingType: return TypeAdapter( - Union[ - KATFindingType, - CVEFindingType, - CWEFindingType, - RetireJSFindingType, - SnykFindingType, - CAPECFindingType, - ] + KATFindingType | CVEFindingType | CWEFindingType | RetireJSFindingType | SnykFindingType | CAPECFindingType ).validate_python( { "object_type": finding.finding_type.class_, @@ -245,7 +238,7 @@ def get_finding_type_from_finding(finding: Finding) -> FindingType: def get_or_create_ooi( api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime = None -) -> Tuple[OOI, Union[bool, datetime]]: +) -> tuple[OOI, bool | datetime]: _now = datetime.now(timezone.utc) if observed_at is None: observed_at = _now diff --git a/rocky/tools/templatetags/ooi_extra.py b/rocky/tools/templatetags/ooi_extra.py index 6ea833f2448..3757e9efa3f 100644 --- a/rocky/tools/templatetags/ooi_extra.py +++ b/rocky/tools/templatetags/ooi_extra.py @@ -1,5 +1,5 @@ import json -from typing import Any, List, Set, Type +from typing import Any from urllib import parse from django import template @@ -32,12 +32,12 @@ def sum_list(array): @register.simple_tag() -def get_scan_levels() -> List[str]: +def get_scan_levels() -> list[str]: return list(map(str, range(1, 5))) @register.filter -def ooi_types_to_strings(ooi_types: Set[Type[OOI]]): +def ooi_types_to_strings(ooi_types: set[type[OOI]]): return [ooi_type.get_ooi_type() for ooi_type in ooi_types] diff --git a/rocky/tools/view_helpers.py b/rocky/tools/view_helpers.py index fb552714bbb..bbb90c3caad 100644 --- a/rocky/tools/view_helpers.py +++ b/rocky/tools/view_helpers.py @@ -1,6 +1,6 @@ import uuid from datetime import date, datetime, timezone -from typing import List, TypedDict +from typing import TypedDict from urllib.parse import urlencode, urlparse, urlunparse from account.mixins import OrganizationView @@ -22,7 +22,7 @@ def convert_date_to_datetime(d: date) -> datetime: return datetime.combine(d, datetime.max.time(), tzinfo=timezone.utc) -def get_mandatory_fields(request, params: List[str] = None): +def get_mandatory_fields(request, params: list[str] = None): mandatory_fields = [] if not params: @@ -85,9 +85,9 @@ class Breadcrumb(TypedDict): class BreadcrumbsMixin: - breadcrumbs: List[Breadcrumb] = [] + breadcrumbs: list[Breadcrumb] = [] - def build_breadcrumbs(self) -> List[Breadcrumb]: + def build_breadcrumbs(self) -> list[Breadcrumb]: return self.breadcrumbs.copy() def get_context_data(self, **kwargs): @@ -102,7 +102,7 @@ class Step(TypedDict): class StepsMixin: - steps: List[Step] = [] + steps: list[Step] = [] current_step: int = None def get_current_step(self): @@ -113,7 +113,7 @@ def get_current_step(self): def set_current_stepper_url(self, url): self.steps[self.get_current_step() - 1]["url"] = url - def build_steps(self) -> List[Step]: + def build_steps(self) -> list[Step]: return self.steps.copy() def get_context_data(self, **kwargs): From a26e356c31abe2c183632a7d4411e3fef419d173 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:17:02 +0100 Subject: [PATCH 47/85] Open ports report unit tests (#2514) Co-authored-by: Jeroen Dekkers --- .../report_types/open_ports_report/report.py | 1 - rocky/tests/conftest.py | 7 +- rocky/tests/reports/test_open_ports_report.py | 82 +++++++++++++++++++ 3 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 rocky/tests/reports/test_open_ports_report.py diff --git a/rocky/reports/report_types/open_ports_report/report.py b/rocky/reports/report_types/open_ports_report/report.py index 427091e5ffd..39ab58ae74f 100644 --- a/rocky/reports/report_types/open_ports_report/report.py +++ b/rocky/reports/report_types/open_ports_report/report.py @@ -57,7 +57,6 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: ) port_numbers[port.port] = found_by_openkat - self.octopoes_api_connector.query("IPPort. Date: Mon, 19 Feb 2024 08:58:38 +0100 Subject: [PATCH 48/85] Update and remove dependencies (#2517) --- boefjes/poetry.lock | 893 ++++++++++++++------------- boefjes/pyproject.toml | 4 +- boefjes/requirements-dev.txt | 884 ++++++++++++++------------- boefjes/requirements.txt | 884 ++++++++++++++------------- bytes/poetry.lock | 648 ++++++++------------ bytes/pyproject.toml | 13 +- bytes/requirements-dev.txt | 536 ++++++++-------- bytes/requirements.txt | 512 ++++++++-------- keiko/poetry.lock | 10 + keiko/requirements-dev.txt | 12 +- keiko/requirements.txt | 12 +- mula/poetry.lock | 537 ++++++++-------- mula/requirements-dev.txt | 528 ++++++++-------- mula/requirements.txt | 516 ++++++++-------- octopoes/poetry.lock | 723 ++++++++-------------- octopoes/pyproject.toml | 1 - octopoes/requirements-dev.txt | 592 ++++++++---------- octopoes/requirements.txt | 491 ++++++++------- rocky/poetry.lock | 1080 +++++++++++++-------------------- rocky/pyproject.toml | 9 +- rocky/requirements-dev.txt | 942 +++++++++++++--------------- rocky/requirements.txt | 772 +++++++++++------------ 22 files changed, 4840 insertions(+), 5759 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 917427839c3..e6ff7cbf096 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -281,13 +281,13 @@ rich = ">=10.16.2" [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -512,43 +512,43 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", [[package]] name = "cryptography" -version = "42.0.1" +version = "42.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, - {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, - {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, - {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, - {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, - {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, - {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, + {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, + {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, + {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, + {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, + {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, + {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, ] [package.dependencies] @@ -882,69 +882,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.0" +version = "1.60.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, - {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, - {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, - {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, - {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, - {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, - {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, - {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, - {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, - {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, - {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, - {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, - {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, - {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, - {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, - {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, - {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, - {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, - {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, - {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, - {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, - {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, - {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, - {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, + {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, + {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, + {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, + {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, + {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, + {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, + {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, + {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, + {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, + {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, + {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, + {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, + {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, + {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, + {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, + {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, + {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, + {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, + {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, + {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, + {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, + {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, + {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, + {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.0)"] +protobuf = ["grpcio-tools (>=1.60.1)"] [[package]] name = "h11" @@ -959,13 +959,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, ] [package.dependencies] @@ -976,7 +976,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.24.0)"] [[package]] name = "httpretty" @@ -1197,13 +1197,13 @@ source = ["Cython (>=3.0.7)"] [[package]] name = "mako" -version = "1.3.0" +version = "1.3.2" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.0-py3-none-any.whl", hash = "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9"}, - {file = "Mako-1.3.0.tar.gz", hash = "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b"}, + {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, + {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, ] [package.dependencies] @@ -1240,71 +1240,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -1320,85 +1320,101 @@ files = [ [[package]] name = "multidict" -version = "6.0.4" +version = "6.0.5" description = "multidict implementation" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, ] [[package]] @@ -1844,18 +1860,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -1863,90 +1879,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -2208,7 +2224,6 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, - {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -2234,110 +2249,110 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.17.1" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, - {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, - {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, - {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, - {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, - {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, - {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, - {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, - {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, - {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, - {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, - {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, - {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] @@ -2359,18 +2374,18 @@ requests = "*" [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -2430,51 +2445,30 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, - {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, - {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -2560,17 +2554,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2850,4 +2845,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "8d0a745650b94605b06881e904fd43ddce55894aca2b4f2f7f2b72c327836418" +content-hash = "b7694182a95c5261367ba0f1cc8ebbe4eb8cf3d3974aa8d782eb7f95dde51fd2" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index f8da0aef9ea..e644b10c1ea 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -45,8 +45,6 @@ python-libnmap = "0.7.3" shodan = "1.25.0" # required by kat_ssl_certificates boefje cryptography = "^42.0.1" -# required by kat_webpage_analysis/check_images normalizer -Pillow = "^10.0.1" # required by kat_webpage_analysis forcediphttpsadapter = "1.1.0" # required by kat_webpage_analysis (forcediphttpsadapter) @@ -63,6 +61,8 @@ netaddr = "0.9.0" defusedxml = "^0.7.1" pydantic-settings = "^2.0.3" opentelemetry-instrumentation = "^0.41b0" +# required by kat_webpage_analysis/check_images normalizer +pillow = "^10.2.0" [tool.poetry.group.dev.dependencies] pytest = "^8.0.0" diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 96939699a64..051552c0ebf 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -111,9 +111,9 @@ beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" \ censys==2.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2ddd6d0ee6df70acf15792328df8bb4d0dd5a76b50883adac62989f1641820c1 \ --hash=sha256:665acf8777a871098832527ab8e0c5b1b9f9a548be928239747a6fcde8b613eb -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -270,39 +270,39 @@ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -470,67 +470,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -633,151 +633,167 @@ lxml==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4 \ --hash=sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204 \ --hash=sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -multidict==6.0.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ - --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ - --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ - --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \ - --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \ - --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \ - --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \ - --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \ - --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \ - --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \ - --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \ - --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \ - --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \ - --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \ - --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \ - --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \ - --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \ - --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \ - --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \ - --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \ - --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \ - --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \ - --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \ - --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \ - --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \ - --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \ - --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \ - --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \ - --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \ - --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \ - --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \ - --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \ - --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \ - --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \ - --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \ - --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \ - --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \ - --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \ - --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \ - --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \ - --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \ - --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \ - --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \ - --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \ - --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \ - --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \ - --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \ - --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \ - --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \ - --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \ - --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \ - --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \ - --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \ - --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \ - --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \ - --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \ - --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \ - --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \ - --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \ - --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \ - --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \ - --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \ - --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \ - --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \ - --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \ - --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \ - --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \ - --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \ - --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \ - --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \ - --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \ - --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ - --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ - --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba +multidict==6.0.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556 \ + --hash=sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c \ + --hash=sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29 \ + --hash=sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b \ + --hash=sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8 \ + --hash=sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7 \ + --hash=sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd \ + --hash=sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40 \ + --hash=sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6 \ + --hash=sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3 \ + --hash=sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c \ + --hash=sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9 \ + --hash=sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5 \ + --hash=sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae \ + --hash=sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442 \ + --hash=sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9 \ + --hash=sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc \ + --hash=sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c \ + --hash=sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea \ + --hash=sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5 \ + --hash=sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50 \ + --hash=sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182 \ + --hash=sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453 \ + --hash=sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e \ + --hash=sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600 \ + --hash=sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733 \ + --hash=sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda \ + --hash=sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241 \ + --hash=sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461 \ + --hash=sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e \ + --hash=sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e \ + --hash=sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b \ + --hash=sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e \ + --hash=sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7 \ + --hash=sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386 \ + --hash=sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd \ + --hash=sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9 \ + --hash=sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf \ + --hash=sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee \ + --hash=sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5 \ + --hash=sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a \ + --hash=sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271 \ + --hash=sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54 \ + --hash=sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4 \ + --hash=sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496 \ + --hash=sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb \ + --hash=sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319 \ + --hash=sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3 \ + --hash=sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f \ + --hash=sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527 \ + --hash=sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed \ + --hash=sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604 \ + --hash=sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef \ + --hash=sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8 \ + --hash=sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5 \ + --hash=sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5 \ + --hash=sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626 \ + --hash=sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c \ + --hash=sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d \ + --hash=sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c \ + --hash=sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc \ + --hash=sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc \ + --hash=sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b \ + --hash=sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38 \ + --hash=sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450 \ + --hash=sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1 \ + --hash=sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f \ + --hash=sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3 \ + --hash=sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755 \ + --hash=sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226 \ + --hash=sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a \ + --hash=sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046 \ + --hash=sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf \ + --hash=sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479 \ + --hash=sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e \ + --hash=sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1 \ + --hash=sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a \ + --hash=sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83 \ + --hash=sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929 \ + --hash=sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93 \ + --hash=sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a \ + --hash=sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c \ + --hash=sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44 \ + --hash=sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89 \ + --hash=sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba \ + --hash=sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e \ + --hash=sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da \ + --hash=sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24 \ + --hash=sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423 \ + --hash=sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef netaddr==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1 \ --hash=sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128 @@ -931,92 +947,92 @@ pybinaryedge==0.5 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pydicom==2.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 @@ -1073,120 +1089,119 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ - --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e sectxt==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c5b113cb37ec5053bf8ea335306a7c68079b53959df2324ffa9991885bec67a8 \ --hash=sha256:c81d874a55b96516d13e2b688f3150a6089e0636122237e4710717beafcb26d7 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 shodan==1.25.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7e2bddbc1b60bf620042d0010f4b762a80b43111dbea9c041d72d4325e260c23 six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -1199,12 +1214,9 @@ soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ - --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ - --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1212,38 +1224,20 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ - --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ - --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ - --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ - --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ - --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ - --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ - --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ - --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ - --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ - --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ - --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ - --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ - --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ - --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ - --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ - --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ - --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ - --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ @@ -1257,9 +1251,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index a458cccf509..833ce3dc0e6 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -111,9 +111,9 @@ beautifulsoup4==4.11.1 ; python_version >= "3.10" and python_version < "4.0" \ censys==2.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2ddd6d0ee6df70acf15792328df8bb4d0dd5a76b50883adac62989f1641820c1 \ --hash=sha256:665acf8777a871098832527ab8e0c5b1b9f9a548be928239747a6fcde8b613eb -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -270,39 +270,39 @@ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -470,67 +470,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -630,151 +630,167 @@ lxml==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4 \ --hash=sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204 \ --hash=sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba -multidict==6.0.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9 \ - --hash=sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8 \ - --hash=sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03 \ - --hash=sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710 \ - --hash=sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161 \ - --hash=sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664 \ - --hash=sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569 \ - --hash=sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067 \ - --hash=sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313 \ - --hash=sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706 \ - --hash=sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2 \ - --hash=sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636 \ - --hash=sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49 \ - --hash=sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93 \ - --hash=sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603 \ - --hash=sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0 \ - --hash=sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60 \ - --hash=sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4 \ - --hash=sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e \ - --hash=sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1 \ - --hash=sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60 \ - --hash=sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951 \ - --hash=sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc \ - --hash=sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe \ - --hash=sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95 \ - --hash=sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d \ - --hash=sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8 \ - --hash=sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed \ - --hash=sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2 \ - --hash=sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775 \ - --hash=sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87 \ - --hash=sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c \ - --hash=sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2 \ - --hash=sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98 \ - --hash=sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3 \ - --hash=sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe \ - --hash=sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78 \ - --hash=sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660 \ - --hash=sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176 \ - --hash=sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e \ - --hash=sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988 \ - --hash=sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c \ - --hash=sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c \ - --hash=sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0 \ - --hash=sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449 \ - --hash=sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f \ - --hash=sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde \ - --hash=sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5 \ - --hash=sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d \ - --hash=sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac \ - --hash=sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a \ - --hash=sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9 \ - --hash=sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca \ - --hash=sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11 \ - --hash=sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35 \ - --hash=sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063 \ - --hash=sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b \ - --hash=sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982 \ - --hash=sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258 \ - --hash=sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1 \ - --hash=sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52 \ - --hash=sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480 \ - --hash=sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7 \ - --hash=sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461 \ - --hash=sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d \ - --hash=sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc \ - --hash=sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779 \ - --hash=sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a \ - --hash=sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547 \ - --hash=sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0 \ - --hash=sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171 \ - --hash=sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf \ - --hash=sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d \ - --hash=sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba +multidict==6.0.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556 \ + --hash=sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c \ + --hash=sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29 \ + --hash=sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b \ + --hash=sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8 \ + --hash=sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7 \ + --hash=sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd \ + --hash=sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40 \ + --hash=sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6 \ + --hash=sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3 \ + --hash=sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c \ + --hash=sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9 \ + --hash=sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5 \ + --hash=sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae \ + --hash=sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442 \ + --hash=sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9 \ + --hash=sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc \ + --hash=sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c \ + --hash=sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea \ + --hash=sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5 \ + --hash=sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50 \ + --hash=sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182 \ + --hash=sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453 \ + --hash=sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e \ + --hash=sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600 \ + --hash=sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733 \ + --hash=sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda \ + --hash=sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241 \ + --hash=sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461 \ + --hash=sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e \ + --hash=sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e \ + --hash=sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b \ + --hash=sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e \ + --hash=sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7 \ + --hash=sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386 \ + --hash=sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd \ + --hash=sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9 \ + --hash=sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf \ + --hash=sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee \ + --hash=sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5 \ + --hash=sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a \ + --hash=sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271 \ + --hash=sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54 \ + --hash=sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4 \ + --hash=sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496 \ + --hash=sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb \ + --hash=sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319 \ + --hash=sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3 \ + --hash=sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f \ + --hash=sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527 \ + --hash=sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed \ + --hash=sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604 \ + --hash=sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef \ + --hash=sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8 \ + --hash=sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5 \ + --hash=sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5 \ + --hash=sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626 \ + --hash=sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c \ + --hash=sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d \ + --hash=sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c \ + --hash=sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc \ + --hash=sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc \ + --hash=sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b \ + --hash=sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38 \ + --hash=sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450 \ + --hash=sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1 \ + --hash=sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f \ + --hash=sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3 \ + --hash=sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755 \ + --hash=sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226 \ + --hash=sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a \ + --hash=sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046 \ + --hash=sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf \ + --hash=sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479 \ + --hash=sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e \ + --hash=sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1 \ + --hash=sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a \ + --hash=sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83 \ + --hash=sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929 \ + --hash=sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93 \ + --hash=sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a \ + --hash=sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c \ + --hash=sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44 \ + --hash=sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89 \ + --hash=sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba \ + --hash=sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e \ + --hash=sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da \ + --hash=sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24 \ + --hash=sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423 \ + --hash=sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef netaddr==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5148b1055679d2a1ec070c521b7db82137887fabd6d7e37f5199b44f775c3bb1 \ --hash=sha256:7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128 @@ -925,92 +941,92 @@ pybinaryedge==0.5 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pydicom==2.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:90b4801d851ce65be3df520e16bbfa3d6c767cf2a3a3b1c18f6780e6b670b87a \ --hash=sha256:f9f8e19b78525be57aa6384484298833e4d06ac1d6226c79459131ddb0bd7c42 @@ -1061,120 +1077,119 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ - --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e sectxt==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:c5b113cb37ec5053bf8ea335306a7c68079b53959df2324ffa9991885bec67a8 \ --hash=sha256:c81d874a55b96516d13e2b688f3150a6089e0636122237e4710717beafcb26d7 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 shodan==1.25.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7e2bddbc1b60bf620042d0010f4b762a80b43111dbea9c041d72d4325e260c23 six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -1187,12 +1202,9 @@ soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ - --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ - --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1200,38 +1212,20 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ - --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ - --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ - --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ - --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ - --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ - --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ - --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ - --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ - --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ - --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ - --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ - --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ - --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ - --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ - --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ - --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ - --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ - --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ @@ -1242,9 +1236,9 @@ tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 3d6d1941d48..1a0a08f1f0e 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -69,44 +69,6 @@ typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] -[[package]] -name = "astroid" -version = "2.15.8" -description = "An abstract syntax tree for Python with inference support." -optional = false -python-versions = ">=3.7.2" -files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, -] - -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = [ - {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, - {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, -] - -[[package]] -name = "attrs" -version = "23.2.0" -description = "Classes Without Boilerplate" -optional = false -python-versions = ">=3.7" -files = [ - {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, - {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, -] - -[package.extras] -cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[tests]", "pre-commit"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] -tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] -tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] - [[package]] name = "backoff" version = "2.2.1" @@ -370,43 +332,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.1" +version = "42.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, - {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, - {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, - {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, - {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, - {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, - {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, + {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, + {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, + {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, + {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, + {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, + {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, ] [package.dependencies] @@ -586,69 +548,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.0" +version = "1.60.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, - {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, - {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, - {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, - {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, - {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, - {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, - {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, - {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, - {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, - {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, - {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, - {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, - {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, - {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, - {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, - {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, - {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, - {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, - {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, - {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, - {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, - {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, - {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, + {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, + {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, + {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, + {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, + {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, + {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, + {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, + {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, + {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, + {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, + {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, + {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, + {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, + {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, + {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, + {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, + {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, + {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, + {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, + {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, + {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, + {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, + {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, + {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.0)"] +protobuf = ["grpcio-tools (>=1.60.1)"] [[package]] name = "h11" @@ -663,13 +625,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, ] [package.dependencies] @@ -680,7 +642,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.24.0)"] [[package]] name = "httpx" @@ -736,21 +698,6 @@ docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.link perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] -[[package]] -name = "importlib-resources" -version = "5.13.0" -description = "Read resources from Python packages" -optional = false -python-versions = ">=3.8" -files = [ - {file = "importlib_resources-5.13.0-py3-none-any.whl", hash = "sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2"}, - {file = "importlib_resources-5.13.0.tar.gz", hash = "sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528"}, -] - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] - [[package]] name = "iniconfig" version = "2.0.0" @@ -762,20 +709,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "isort" -version = "5.13.2" -description = "A Python utility / library to sort Python imports." -optional = false -python-versions = ">=3.8.0" -files = [ - {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, - {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, -] - -[package.extras] -colors = ["colorama (>=0.4.6)"] - [[package]] name = "lazy-object-proxy" version = "1.10.0" @@ -824,13 +757,13 @@ files = [ [[package]] name = "mako" -version = "1.3.0" +version = "1.3.2" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.0-py3-none-any.whl", hash = "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9"}, - {file = "Mako-1.3.0.tar.gz", hash = "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b"}, + {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, + {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, ] [package.dependencies] @@ -843,93 +776,71 @@ testing = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, -] - -[[package]] -name = "mccabe" -version = "0.7.0" -description = "McCabe checker, plugin for flake8" -optional = false -python-versions = ">=3.6" -files = [ - {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, - {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, -] - -[[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -optional = false -python-versions = ">=3.5" -files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -1190,17 +1101,6 @@ bcrypt = ["bcrypt (>=3.1.0)"] build-docs = ["cloud-sptheme (>=1.10.1)", "sphinx (>=1.6)", "sphinxcontrib-fulltoc (>=1.2.0)"] totp = ["cryptography"] -[[package]] -name = "pathspec" -version = "0.9.0" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -files = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] - [[package]] name = "pika" version = "1.3.2" @@ -1217,21 +1117,6 @@ gevent = ["gevent"] tornado = ["tornado"] twisted = ["twisted"] -[[package]] -name = "platformdirs" -version = "3.11.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -optional = false -python-versions = ">=3.7" -files = [ - {file = "platformdirs-3.11.0-py3-none-any.whl", hash = "sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e"}, - {file = "platformdirs-3.11.0.tar.gz", hash = "sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3"}, -] - -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] - [[package]] name = "pluggy" version = "1.4.0" @@ -1341,18 +1226,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -1360,90 +1245,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -1596,17 +1481,17 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] name = "python-multipart" -version = "0.0.7" +version = "0.0.9" description = "A streaming multipart parser for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "python_multipart-0.0.7-py3-none-any.whl", hash = "sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49"}, - {file = "python_multipart-0.0.7.tar.gz", hash = "sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9"}, + {file = "python_multipart-0.0.9-py3-none-any.whl", hash = "sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215"}, + {file = "python_multipart-0.0.9.tar.gz", hash = "sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026"}, ] [package.extras] -dev = ["atomicwrites (==1.2.1)", "attrs (==19.2.0)", "coverage (==6.5.0)", "hatch", "invoke (==2.2.0)", "more-itertools (==4.3.0)", "pbr (==4.3.0)", "pluggy (==1.0.0)", "py (==1.11.0)", "pytest (==7.2.0)", "pytest-cov (==4.0.0)", "pytest-timeout (==2.1.0)", "pyyaml (==5.1)"] +dev = ["atomicwrites (==1.4.1)", "attrs (==23.2.0)", "coverage (==7.4.1)", "hatch", "invoke (==2.2.0)", "more-itertools (==10.2.0)", "pbr (==6.0.0)", "pluggy (==1.4.0)", "py (==1.11.0)", "pytest (==8.0.0)", "pytest-cov (==4.1.0)", "pytest-timeout (==2.2.0)", "pyyaml (==6.0.1)", "ruff (==0.2.1)"] [[package]] name = "requests" @@ -1706,51 +1591,30 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, - {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, - {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, - {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, - {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, - {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, - {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, - {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, - {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -1795,17 +1659,6 @@ anyio = ">=3.4.0,<5" [package.extras] full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] - [[package]] name = "tomli" version = "2.0.1" @@ -1830,17 +1683,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1960,4 +1814,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "68a23f081b78a4d74315459fabceca3c85b12b46e4564e5f29e20e7095c6d74c" +content-hash = "9c6f25546e0bdd3e9801988816e769c27694011d5f7acd8e439f8a97b52ed5d5" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index b59f78152c0..1a5fca52604 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -23,7 +23,6 @@ greenlet = "^2.0.1" h11 = "^0.13.0" idna = "^3.4" importlib-metadata = "^6.0.1" -importlib-resources = "^5.7.1" mako = "^1.2.4" markupsafe = "^2.1.3" passlib = { version = "^1.7.4", extras = ["bcrypt"] } @@ -32,11 +31,10 @@ prometheus-client = "^0.16.0" psycopg2 = "^2.9.6" pyasn1 = "^0.4.8" pycparser = "^2.21" -pydantic = "^2.5.3" +pydantic = "^2.6.1" pynacl = "^1.5.0" python-dotenv = "^1.0.0" python-jose = { version = "^3.3.0", extras = ["cryptography"] } -python-multipart = "^0.0.7" requests = "^2.31.0" rfc3161ng = "^2.1.3" rsa = "^4.9" @@ -57,23 +55,16 @@ opentelemetry-instrumentation-requests = "^0.41b0" opentelemetry-instrumentation = "^0.41b0" opentelemetry-instrumentation-dbapi = "^0.41b0" pydantic-settings = "^2.0.3" +python-multipart = "^0.0.9" [tool.poetry.group.dev.dependencies] -astroid = "^2.12.12" -attrs = "^23.1.0" iniconfig = "^2.0.0" -isort = "^5.10.1" lazy-object-proxy = "^1.7.1" -mccabe = "^0.7.0" -mypy-extensions = "^1.0.0" packaging = "^23.0" -pathspec = "^0.9.0" -platformdirs = "^3.0.0" pluggy = "^1.0.0" pyparsing = "^3.0.9" pytest = "^8.0.0" setuptools = "^68.0.0" -toml = "^0.10.2" tomli = "^2.0.1" wrapt = "^1.14.1" pytest-env = "^1.1.3" diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index 6f3b64bfe14..145dcb7486b 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -10,12 +10,6 @@ anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -astroid==2.15.8 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c \ - --hash=sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a -attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ - --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 @@ -203,39 +197,39 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -316,67 +310,67 @@ greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -386,15 +380,9 @@ idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==5.13.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528 \ - --hash=sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2 iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -isort==5.13.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109 \ - --hash=sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6 lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56 \ --hash=sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4 \ @@ -433,76 +421,70 @@ lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mccabe==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ - --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e -mypy-extensions==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ - --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -548,15 +530,9 @@ packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ passlib[bcrypt]==1.7.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1 \ --hash=sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04 -pathspec==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a \ - --hash=sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1 pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f -platformdirs==3.11.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ - --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be @@ -598,92 +574,92 @@ pyasn1==0.4.8 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -713,9 +689,9 @@ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.7 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9 \ - --hash=sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49 +python-multipart==0.0.9 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 \ + --hash=sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -735,12 +711,9 @@ sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ - --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ - --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -748,54 +721,33 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ - --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ - --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ - --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ - --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ - --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ - --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ - --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ - --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ - --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ - --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ - --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ - --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ - --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ - --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ - --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ - --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ - --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ - --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -toml==0.10.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ - --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 2605cdbd567..64cac8b9ad8 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -197,39 +197,39 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -310,67 +310,67 @@ greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -380,73 +380,70 @@ idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==5.13.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:82d5c6cca930697dbbd86c93333bb2c2e72861d4789a11c2662b933e5ad2b528 \ - --hash=sha256:9f7bd0c97b79972a6cce36a366356d16d5e13b09679c11a58f1014bfdf8e64b2 -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -530,92 +527,92 @@ pyasn1==0.4.8 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -636,9 +633,9 @@ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ python-jose[cryptography]==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a \ --hash=sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a -python-multipart==0.0.7 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:288a6c39b06596c1b988bb6794c6fbc80e6c369e35e5062637df256bee0c9af9 \ - --hash=sha256:b1fef9a53b74c795e2347daac8c54b252d9e0df9c619712691c1cc8021bd3c49 +python-multipart==0.0.9 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:03f54688c663f1b7977105f021043b0793151e4cb1c1a9d4a11fc13d622c4026 \ + --hash=sha256:97ca7b8ea7b05f977dc3849c3ba99d51689822fab725c3703af7c866a0c2b215 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -658,12 +655,9 @@ sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ - --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ - --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -671,38 +665,20 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ - --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ - --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ - --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ - --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ - --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ - --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ - --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ - --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ - --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ - --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ - --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ - --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ - --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ - --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ - --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ - --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ - --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ - --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ @@ -710,9 +686,9 @@ starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/keiko/poetry.lock b/keiko/poetry.lock index 3fabcf9010d..0f0d5afe236 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -494,6 +494,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index 6f9376a5eed..b24be422339 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -206,8 +206,11 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ + --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ + --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ + --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -215,6 +218,7 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ + --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -223,6 +227,7 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ + --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -230,9 +235,12 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ + --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ + --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ + --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -251,7 +259,9 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 + --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ + --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba diff --git a/keiko/requirements.txt b/keiko/requirements.txt index 6cdb6f56d36..6954cfa9470 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -194,8 +194,11 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ + --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ + --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ + --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ @@ -203,6 +206,7 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ + --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ @@ -211,6 +215,7 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ + --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ @@ -218,9 +223,12 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ + --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ + --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ + --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ @@ -239,7 +247,9 @@ markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 + --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ + --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ + --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 diff --git a/mula/poetry.lock b/mula/poetry.lock index ead9bc3c9ed..ca52e4edede 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -344,13 +344,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "22.6.0" +version = "23.2.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-22.6.0-py3-none-any.whl", hash = "sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d"}, - {file = "Faker-22.6.0.tar.gz", hash = "sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26"}, + {file = "Faker-23.2.0-py3-none-any.whl", hash = "sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952"}, + {file = "Faker-23.2.0.tar.gz", hash = "sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9"}, ] [package.dependencies] @@ -465,69 +465,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.0" +version = "1.60.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, - {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, - {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, - {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, - {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, - {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, - {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, - {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, - {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, - {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, - {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, - {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, - {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, - {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, - {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, - {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, - {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, - {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, - {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, - {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, - {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, - {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, - {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, - {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, + {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, + {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, + {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, + {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, + {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, + {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, + {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, + {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, + {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, + {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, + {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, + {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, + {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, + {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, + {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, + {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, + {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, + {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, + {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, + {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, + {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, + {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, + {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, + {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.0)"] +protobuf = ["grpcio-tools (>=1.60.1)"] [[package]] name = "h11" @@ -542,13 +542,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, ] [package.dependencies] @@ -559,7 +559,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.24.0)"] [[package]] name = "httpx" @@ -628,13 +628,13 @@ files = [ [[package]] name = "mako" -version = "1.3.0" +version = "1.3.2" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.0-py3-none-any.whl", hash = "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9"}, - {file = "Mako-1.3.0.tar.gz", hash = "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b"}, + {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, + {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, ] [package.dependencies] @@ -647,71 +647,71 @@ testing = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -1161,18 +1161,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -1180,90 +1180,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -1388,18 +1388,18 @@ decorator = ">=3.4.2" [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -1426,60 +1426,60 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.25" +version = "2.0.27" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84daa0a2055df9ca0f148a64fdde12ac635e30edbca80e87df9b3aaf419e144a"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc8b7dabe8e67c4832891a5d322cec6d44ef02f432b4588390017f5cec186a84"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db854730a25db7c956423bb9fb4bdd1216c839a689bf9cc15fada0a7fb2f4570"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-win32.whl", hash = "sha256:14a6f68e8fc96e5e8f5647ef6cda6250c780612a573d99e4d881581432ef1669"}, - {file = "SQLAlchemy-2.0.25-cp310-cp310-win_amd64.whl", hash = "sha256:87f6e732bccd7dcf1741c00f1ecf33797383128bd1c90144ac8adc02cbb98643"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:342d365988ba88ada8af320d43df4e0b13a694dbd75951f537b2d5e4cb5cd002"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa9373708763ef46782d10e950b49d0235bfe58facebd76917d3f5cbf5971aed"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d24f571990c05f6b36a396218f251f3e0dda916e0c687ef6fdca5072743208f5"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75432b5b14dc2fff43c50435e248b45c7cdadef73388e5610852b95280ffd0e9"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:884272dcd3ad97f47702965a0e902b540541890f468d24bd1d98bcfe41c3f018"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-win32.whl", hash = "sha256:e607cdd99cbf9bb80391f54446b86e16eea6ad309361942bf88318bcd452363c"}, - {file = "SQLAlchemy-2.0.25-cp311-cp311-win_amd64.whl", hash = "sha256:7d505815ac340568fd03f719446a589162d55c52f08abd77ba8964fbb7eb5b5f"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b801154027107461ee992ff4b5c09aa7cc6ec91ddfe50d02bca344918c3265c6"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59a21853f5daeb50412d459cfb13cb82c089ad4c04ec208cd14dddd99fc23b39"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29049e2c299b5ace92cbed0c1610a7a236f3baf4c6b66eb9547c01179f638ec5"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b64b183d610b424a160b0d4d880995e935208fc043d0302dd29fee32d1ee3f95"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4f7a7d7fcc675d3d85fbf3b3828ecd5990b8d61bd6de3f1b260080b3beccf215"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-win32.whl", hash = "sha256:cf18ff7fc9941b8fc23437cc3e68ed4ebeff3599eec6ef5eebf305f3d2e9a7c2"}, - {file = "SQLAlchemy-2.0.25-cp312-cp312-win_amd64.whl", hash = "sha256:91f7d9d1c4dd1f4f6e092874c128c11165eafcf7c963128f79e28f8445de82d5"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bb209a73b8307f8fe4fe46f6ad5979649be01607f11af1eb94aa9e8a3aaf77f0"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798f717ae7c806d67145f6ae94dc7c342d3222d3b9a311a784f371a4333212c7"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fdd402169aa00df3142149940b3bf9ce7dde075928c1886d9a1df63d4b8de62"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:74b080c897563f81062b74e44f5a72fa44c2b373741a9ade701d5f789a10ba23"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-win32.whl", hash = "sha256:87d91043ea0dc65ee583026cb18e1b458d8ec5fc0a93637126b5fc0bc3ea68c4"}, - {file = "SQLAlchemy-2.0.25-cp37-cp37m-win_amd64.whl", hash = "sha256:75f99202324383d613ddd1f7455ac908dca9c2dd729ec8584c9541dd41822a2c"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:420362338681eec03f53467804541a854617faed7272fe71a1bfdb07336a381e"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c88f0c7dcc5f99bdb34b4fd9b69b93c89f893f454f40219fe923a3a2fd11625"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3be4987e3ee9d9a380b66393b77a4cd6d742480c951a1c56a23c335caca4ce3"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8b8cb63d3ea63b29074dcd29da4dc6a97ad1349151f2d2949495418fd6e48db9"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:736ea78cd06de6c21ecba7416499e7236a22374561493b456a1f7ffbe3f6cdb4"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-win32.whl", hash = "sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e"}, - {file = "SQLAlchemy-2.0.25-cp38-cp38-win_amd64.whl", hash = "sha256:c55731c116806836a5d678a70c84cb13f2cedba920212ba7dcad53260997666d"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:605b6b059f4b57b277f75ace81cc5bc6335efcbcc4ccb9066695e515dbdb3900"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:665f0a3954635b5b777a55111ababf44b4fc12b1f3ba0a435b602b6387ffd7cf"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecf6d4cda1f9f6cb0b45803a01ea7f034e2f1aed9475e883410812d9f9e3cfcf"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51db269513917394faec5e5c00d6f83829742ba62e2ac4fa5c98d58be91662f"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:790f533fa5c8901a62b6fef5811d48980adeb2f51f1290ade8b5e7ba990ba3de"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1b1180cda6df7af84fe72e4530f192231b1f29a7496951db4ff38dac1687202d"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-win32.whl", hash = "sha256:555651adbb503ac7f4cb35834c5e4ae0819aab2cd24857a123370764dc7d7e24"}, - {file = "SQLAlchemy-2.0.25-cp39-cp39-win_amd64.whl", hash = "sha256:dc55990143cbd853a5d038c05e79284baedf3e299661389654551bd02a6a68d7"}, - {file = "SQLAlchemy-2.0.25-py3-none-any.whl", hash = "sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3"}, - {file = "SQLAlchemy-2.0.25.tar.gz", hash = "sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-win32.whl", hash = "sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4"}, + {file = "SQLAlchemy-2.0.27-cp310-cp310-win_amd64.whl", hash = "sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-win32.whl", hash = "sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5"}, + {file = "SQLAlchemy-2.0.27-cp311-cp311-win_amd64.whl", hash = "sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-win32.whl", hash = "sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254"}, + {file = "SQLAlchemy-2.0.27-cp312-cp312-win_amd64.whl", hash = "sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-win32.whl", hash = "sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c"}, + {file = "SQLAlchemy-2.0.27-cp37-cp37m-win_amd64.whl", hash = "sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-win32.whl", hash = "sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5"}, + {file = "SQLAlchemy-2.0.27-cp38-cp38-win_amd64.whl", hash = "sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-win32.whl", hash = "sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd"}, + {file = "SQLAlchemy-2.0.27-cp39-cp39-win_amd64.whl", hash = "sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620"}, + {file = "SQLAlchemy-2.0.27-py3-none-any.whl", hash = "sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac"}, + {file = "SQLAlchemy-2.0.27.tar.gz", hash = "sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8"}, ] [package.dependencies] @@ -1569,17 +1569,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index 09816990e80..6720bc9ffdf 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -178,9 +178,9 @@ exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==22.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ - --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 +faker==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952 \ + --hash=sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9 fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 @@ -246,67 +246,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platf --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -319,70 +319,70 @@ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mmh3==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ @@ -558,92 +558,92 @@ psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a @@ -661,65 +661,65 @@ requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 retry2==0.9.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f7fee13b1e15d0611c462910a6aa72a8919823988dd0412152bc3719c89a4e55 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.25 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9 \ - --hash=sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d \ - --hash=sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e \ - --hash=sha256:14a6f68e8fc96e5e8f5647ef6cda6250c780612a573d99e4d881581432ef1669 \ - --hash=sha256:1b1180cda6df7af84fe72e4530f192231b1f29a7496951db4ff38dac1687202d \ - --hash=sha256:29049e2c299b5ace92cbed0c1610a7a236f3baf4c6b66eb9547c01179f638ec5 \ - --hash=sha256:342d365988ba88ada8af320d43df4e0b13a694dbd75951f537b2d5e4cb5cd002 \ - --hash=sha256:420362338681eec03f53467804541a854617faed7272fe71a1bfdb07336a381e \ - --hash=sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd \ - --hash=sha256:4f7a7d7fcc675d3d85fbf3b3828ecd5990b8d61bd6de3f1b260080b3beccf215 \ - --hash=sha256:555651adbb503ac7f4cb35834c5e4ae0819aab2cd24857a123370764dc7d7e24 \ - --hash=sha256:59a21853f5daeb50412d459cfb13cb82c089ad4c04ec208cd14dddd99fc23b39 \ - --hash=sha256:5fdd402169aa00df3142149940b3bf9ce7dde075928c1886d9a1df63d4b8de62 \ - --hash=sha256:605b6b059f4b57b277f75ace81cc5bc6335efcbcc4ccb9066695e515dbdb3900 \ - --hash=sha256:665f0a3954635b5b777a55111ababf44b4fc12b1f3ba0a435b602b6387ffd7cf \ - --hash=sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735 \ - --hash=sha256:736ea78cd06de6c21ecba7416499e7236a22374561493b456a1f7ffbe3f6cdb4 \ - --hash=sha256:74b080c897563f81062b74e44f5a72fa44c2b373741a9ade701d5f789a10ba23 \ - --hash=sha256:75432b5b14dc2fff43c50435e248b45c7cdadef73388e5610852b95280ffd0e9 \ - --hash=sha256:75f99202324383d613ddd1f7455ac908dca9c2dd729ec8584c9541dd41822a2c \ - --hash=sha256:790f533fa5c8901a62b6fef5811d48980adeb2f51f1290ade8b5e7ba990ba3de \ - --hash=sha256:798f717ae7c806d67145f6ae94dc7c342d3222d3b9a311a784f371a4333212c7 \ - --hash=sha256:7c88f0c7dcc5f99bdb34b4fd9b69b93c89f893f454f40219fe923a3a2fd11625 \ - --hash=sha256:7d505815ac340568fd03f719446a589162d55c52f08abd77ba8964fbb7eb5b5f \ - --hash=sha256:84daa0a2055df9ca0f148a64fdde12ac635e30edbca80e87df9b3aaf419e144a \ - --hash=sha256:87d91043ea0dc65ee583026cb18e1b458d8ec5fc0a93637126b5fc0bc3ea68c4 \ - --hash=sha256:87f6e732bccd7dcf1741c00f1ecf33797383128bd1c90144ac8adc02cbb98643 \ - --hash=sha256:884272dcd3ad97f47702965a0e902b540541890f468d24bd1d98bcfe41c3f018 \ - --hash=sha256:8b8cb63d3ea63b29074dcd29da4dc6a97ad1349151f2d2949495418fd6e48db9 \ - --hash=sha256:91f7d9d1c4dd1f4f6e092874c128c11165eafcf7c963128f79e28f8445de82d5 \ - --hash=sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08 \ - --hash=sha256:a3be4987e3ee9d9a380b66393b77a4cd6d742480c951a1c56a23c335caca4ce3 \ - --hash=sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3 \ - --hash=sha256:aa9373708763ef46782d10e950b49d0235bfe58facebd76917d3f5cbf5971aed \ - --hash=sha256:b64b183d610b424a160b0d4d880995e935208fc043d0302dd29fee32d1ee3f95 \ - --hash=sha256:b801154027107461ee992ff4b5c09aa7cc6ec91ddfe50d02bca344918c3265c6 \ - --hash=sha256:bb209a73b8307f8fe4fe46f6ad5979649be01607f11af1eb94aa9e8a3aaf77f0 \ - --hash=sha256:bc8b7dabe8e67c4832891a5d322cec6d44ef02f432b4588390017f5cec186a84 \ - --hash=sha256:c51db269513917394faec5e5c00d6f83829742ba62e2ac4fa5c98d58be91662f \ - --hash=sha256:c55731c116806836a5d678a70c84cb13f2cedba920212ba7dcad53260997666d \ - --hash=sha256:cf18ff7fc9941b8fc23437cc3e68ed4ebeff3599eec6ef5eebf305f3d2e9a7c2 \ - --hash=sha256:d24f571990c05f6b36a396218f251f3e0dda916e0c687ef6fdca5072743208f5 \ - --hash=sha256:db854730a25db7c956423bb9fb4bdd1216c839a689bf9cc15fada0a7fb2f4570 \ - --hash=sha256:dc55990143cbd853a5d038c05e79284baedf3e299661389654551bd02a6a68d7 \ - --hash=sha256:e607cdd99cbf9bb80391f54446b86e16eea6ad309361942bf88318bcd452363c \ - --hash=sha256:ecf6d4cda1f9f6cb0b45803a01ea7f034e2f1aed9475e883410812d9f9e3cfcf \ - --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ - --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ - --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 +sqlalchemy==2.0.27 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07 \ + --hash=sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71 \ + --hash=sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5 \ + --hash=sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d \ + --hash=sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131 \ + --hash=sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4 \ + --hash=sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac \ + --hash=sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51 \ + --hash=sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230 \ + --hash=sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5 \ + --hash=sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c \ + --hash=sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876 \ + --hash=sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb \ + --hash=sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d \ + --hash=sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5 \ + --hash=sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6 \ + --hash=sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910 \ + --hash=sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45 \ + --hash=sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6 \ + --hash=sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d \ + --hash=sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254 \ + --hash=sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8 \ + --hash=sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18 \ + --hash=sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951 \ + --hash=sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf \ + --hash=sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a \ + --hash=sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396 \ + --hash=sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f \ + --hash=sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8 \ + --hash=sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979 \ + --hash=sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc \ + --hash=sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c \ + --hash=sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a \ + --hash=sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32 \ + --hash=sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a \ + --hash=sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac \ + --hash=sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c \ + --hash=sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1 \ + --hash=sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd \ + --hash=sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4 \ + --hash=sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd \ + --hash=sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f \ + --hash=sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a \ + --hash=sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f \ + --hash=sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc \ + --hash=sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd \ + --hash=sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8 \ + --hash=sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01 \ + --hash=sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620 starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 @@ -732,9 +732,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_full_version <= "3.11.0a6" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/mula/requirements.txt b/mula/requirements.txt index 2880bed90b6..0be958e09c3 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -187,61 +187,61 @@ greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platf --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -251,70 +251,70 @@ idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -mako==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9 \ - --hash=sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ + --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mmh3==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0033d60c7939168ef65ddc396611077a7268bde024f2c23bdc283a19123f9e9c \ --hash=sha256:01bb9b90d61854dfc2407c5e5192bfb47222d74f29d140cb2dd2a69f2353f7cc \ @@ -467,92 +467,92 @@ psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024 \ --hash=sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913 \ --hash=sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a @@ -561,62 +561,62 @@ requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 retry2==0.9.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f7fee13b1e15d0611c462910a6aa72a8919823988dd0412152bc3719c89a4e55 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 -sqlalchemy==2.0.25 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0d3cab3076af2e4aa5693f89622bef7fa770c6fec967143e4da7508b3dceb9b9 \ - --hash=sha256:0dacf67aee53b16f365c589ce72e766efaabd2b145f9de7c917777b575e3659d \ - --hash=sha256:10331f129982a19df4284ceac6fe87353ca3ca6b4ca77ff7d697209ae0a5915e \ - --hash=sha256:14a6f68e8fc96e5e8f5647ef6cda6250c780612a573d99e4d881581432ef1669 \ - --hash=sha256:1b1180cda6df7af84fe72e4530f192231b1f29a7496951db4ff38dac1687202d \ - --hash=sha256:29049e2c299b5ace92cbed0c1610a7a236f3baf4c6b66eb9547c01179f638ec5 \ - --hash=sha256:342d365988ba88ada8af320d43df4e0b13a694dbd75951f537b2d5e4cb5cd002 \ - --hash=sha256:420362338681eec03f53467804541a854617faed7272fe71a1bfdb07336a381e \ - --hash=sha256:4344d059265cc8b1b1be351bfb88749294b87a8b2bbe21dfbe066c4199541ebd \ - --hash=sha256:4f7a7d7fcc675d3d85fbf3b3828ecd5990b8d61bd6de3f1b260080b3beccf215 \ - --hash=sha256:555651adbb503ac7f4cb35834c5e4ae0819aab2cd24857a123370764dc7d7e24 \ - --hash=sha256:59a21853f5daeb50412d459cfb13cb82c089ad4c04ec208cd14dddd99fc23b39 \ - --hash=sha256:5fdd402169aa00df3142149940b3bf9ce7dde075928c1886d9a1df63d4b8de62 \ - --hash=sha256:605b6b059f4b57b277f75ace81cc5bc6335efcbcc4ccb9066695e515dbdb3900 \ - --hash=sha256:665f0a3954635b5b777a55111ababf44b4fc12b1f3ba0a435b602b6387ffd7cf \ - --hash=sha256:6f9e2e59cbcc6ba1488404aad43de005d05ca56e069477b33ff74e91b6319735 \ - --hash=sha256:736ea78cd06de6c21ecba7416499e7236a22374561493b456a1f7ffbe3f6cdb4 \ - --hash=sha256:74b080c897563f81062b74e44f5a72fa44c2b373741a9ade701d5f789a10ba23 \ - --hash=sha256:75432b5b14dc2fff43c50435e248b45c7cdadef73388e5610852b95280ffd0e9 \ - --hash=sha256:75f99202324383d613ddd1f7455ac908dca9c2dd729ec8584c9541dd41822a2c \ - --hash=sha256:790f533fa5c8901a62b6fef5811d48980adeb2f51f1290ade8b5e7ba990ba3de \ - --hash=sha256:798f717ae7c806d67145f6ae94dc7c342d3222d3b9a311a784f371a4333212c7 \ - --hash=sha256:7c88f0c7dcc5f99bdb34b4fd9b69b93c89f893f454f40219fe923a3a2fd11625 \ - --hash=sha256:7d505815ac340568fd03f719446a589162d55c52f08abd77ba8964fbb7eb5b5f \ - --hash=sha256:84daa0a2055df9ca0f148a64fdde12ac635e30edbca80e87df9b3aaf419e144a \ - --hash=sha256:87d91043ea0dc65ee583026cb18e1b458d8ec5fc0a93637126b5fc0bc3ea68c4 \ - --hash=sha256:87f6e732bccd7dcf1741c00f1ecf33797383128bd1c90144ac8adc02cbb98643 \ - --hash=sha256:884272dcd3ad97f47702965a0e902b540541890f468d24bd1d98bcfe41c3f018 \ - --hash=sha256:8b8cb63d3ea63b29074dcd29da4dc6a97ad1349151f2d2949495418fd6e48db9 \ - --hash=sha256:91f7d9d1c4dd1f4f6e092874c128c11165eafcf7c963128f79e28f8445de82d5 \ - --hash=sha256:a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08 \ - --hash=sha256:a3be4987e3ee9d9a380b66393b77a4cd6d742480c951a1c56a23c335caca4ce3 \ - --hash=sha256:a86b4240e67d4753dc3092d9511886795b3c2852abe599cffe108952f7af7ac3 \ - --hash=sha256:aa9373708763ef46782d10e950b49d0235bfe58facebd76917d3f5cbf5971aed \ - --hash=sha256:b64b183d610b424a160b0d4d880995e935208fc043d0302dd29fee32d1ee3f95 \ - --hash=sha256:b801154027107461ee992ff4b5c09aa7cc6ec91ddfe50d02bca344918c3265c6 \ - --hash=sha256:bb209a73b8307f8fe4fe46f6ad5979649be01607f11af1eb94aa9e8a3aaf77f0 \ - --hash=sha256:bc8b7dabe8e67c4832891a5d322cec6d44ef02f432b4588390017f5cec186a84 \ - --hash=sha256:c51db269513917394faec5e5c00d6f83829742ba62e2ac4fa5c98d58be91662f \ - --hash=sha256:c55731c116806836a5d678a70c84cb13f2cedba920212ba7dcad53260997666d \ - --hash=sha256:cf18ff7fc9941b8fc23437cc3e68ed4ebeff3599eec6ef5eebf305f3d2e9a7c2 \ - --hash=sha256:d24f571990c05f6b36a396218f251f3e0dda916e0c687ef6fdca5072743208f5 \ - --hash=sha256:db854730a25db7c956423bb9fb4bdd1216c839a689bf9cc15fada0a7fb2f4570 \ - --hash=sha256:dc55990143cbd853a5d038c05e79284baedf3e299661389654551bd02a6a68d7 \ - --hash=sha256:e607cdd99cbf9bb80391f54446b86e16eea6ad309361942bf88318bcd452363c \ - --hash=sha256:ecf6d4cda1f9f6cb0b45803a01ea7f034e2f1aed9475e883410812d9f9e3cfcf \ - --hash=sha256:f2a159111a0f58fb034c93eeba211b4141137ec4b0a6e75789ab7a3ef3c7e7e3 \ - --hash=sha256:f37c0caf14b9e9b9e8f6dbc81bc56db06acb4363eba5a633167781a48ef036ed \ - --hash=sha256:f5693145220517b5f42393e07a6898acdfe820e136c98663b971906120549da5 +sqlalchemy==2.0.27 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:03f448ffb731b48323bda68bcc93152f751436ad6037f18a42b7e16af9e91c07 \ + --hash=sha256:0de1263aac858f288a80b2071990f02082c51d88335a1db0d589237a3435fe71 \ + --hash=sha256:0fb3bffc0ced37e5aa4ac2416f56d6d858f46d4da70c09bb731a246e70bff4d5 \ + --hash=sha256:120af1e49d614d2525ac247f6123841589b029c318b9afbfc9e2b70e22e1827d \ + --hash=sha256:1306102f6d9e625cebaca3d4c9c8f10588735ef877f0360b5cdb4fdfd3fd7131 \ + --hash=sha256:15e19a84b84528f52a68143439d0c7a3a69befcd4f50b8ef9b7b69d2628ae7c4 \ + --hash=sha256:1ab4e0448018d01b142c916cc7119ca573803a4745cfe341b8f95657812700ac \ + --hash=sha256:1fc19ae2e07a067663dd24fca55f8ed06a288384f0e6e3910420bf4b1270cc51 \ + --hash=sha256:2f5c9dfb0b9ab5e3a8a00249534bdd838d943ec4cfb9abe176a6c33408430230 \ + --hash=sha256:30d81cc1192dc693d49d5671cd40cdec596b885b0ce3b72f323888ab1c3863d5 \ + --hash=sha256:33e8bde8fff203de50399b9039c4e14e42d4d227759155c21f8da4a47fc8053c \ + --hash=sha256:4535c49d961fe9a77392e3a630a626af5baa967172d42732b7a43496c8b28876 \ + --hash=sha256:48217be1de7d29a5600b5c513f3f7664b21d32e596d69582be0a94e36b8309cb \ + --hash=sha256:5ada0438f5b74c3952d916c199367c29ee4d6858edff18eab783b3978d0db16d \ + --hash=sha256:5b78aa9f4f68212248aaf8943d84c0ff0f74efc65a661c2fc68b82d498311fd5 \ + --hash=sha256:5cd20f58c29bbf2680039ff9f569fa6d21453fbd2fa84dbdb4092f006424c2e6 \ + --hash=sha256:611068511b5531304137bcd7fe8117c985d1b828eb86043bd944cebb7fae3910 \ + --hash=sha256:680b9a36029b30cf063698755d277885d4a0eab70a2c7c6e71aab601323cba45 \ + --hash=sha256:6c5bad7c60a392850d2f0fee8f355953abaec878c483dd7c3836e0089f046bf6 \ + --hash=sha256:6c7a596d0be71b7baa037f4ac10d5e057d276f65a9a611c46970f012752ebf2d \ + --hash=sha256:7f470327d06400a0aa7926b375b8e8c3c31d335e0884f509fe272b3c700a7254 \ + --hash=sha256:86a6ed69a71fe6b88bf9331594fa390a2adda4a49b5c06f98e47bf0d392534f8 \ + --hash=sha256:8dfc936870507da96aebb43e664ae3a71a7b96278382bcfe84d277b88e379b18 \ + --hash=sha256:954d9735ee9c3fa74874c830d089a815b7b48df6f6b6e357a74130e478dbd951 \ + --hash=sha256:9e56afce6431450442f3ab5973156289bd5ec33dd618941283847c9fd5ff06bf \ + --hash=sha256:a3012ab65ea42de1be81fff5fb28d6db893ef978950afc8130ba707179b4284a \ + --hash=sha256:ad862295ad3f644e3c2c0d8b10a988e1600d3123ecb48702d2c0f26771f1c396 \ + --hash=sha256:b1d9d1bfd96eef3c3faedb73f486c89e44e64e40e5bfec304ee163de01cf996f \ + --hash=sha256:b86abba762ecfeea359112b2bb4490802b340850bbee1948f785141a5e020de8 \ + --hash=sha256:b90053be91973a6fb6020a6e44382c97739736a5a9d74e08cc29b196639eb979 \ + --hash=sha256:c4fbe6a766301f2e8a4519f4500fe74ef0a8509a59e07a4085458f26228cd7cc \ + --hash=sha256:ca891af9f3289d24a490a5fde664ea04fe2f4984cd97e26de7442a4251bd4b7c \ + --hash=sha256:cb0845e934647232b6ff5150df37ceffd0b67b754b9fdbb095233deebcddbd4a \ + --hash=sha256:ce850db091bf7d2a1f2fdb615220b968aeff3849007b1204bf6e3e50a57b3d32 \ + --hash=sha256:d04e579e911562f1055d26dab1868d3e0bb905db3bccf664ee8ad109f035618a \ + --hash=sha256:d07ee7793f2aeb9b80ec8ceb96bc8cc08a2aec8a1b152da1955d64e4825fcbac \ + --hash=sha256:d177b7e82f6dd5e1aebd24d9c3297c70ce09cd1d5d37b43e53f39514379c029c \ + --hash=sha256:d7b5a3e2120982b8b6bd1d5d99e3025339f7fb8b8267551c679afb39e9c7c7f1 \ + --hash=sha256:d873c21b356bfaf1589b89090a4011e6532582b3a8ea568a00e0c3aab09399dd \ + --hash=sha256:d997c5938a08b5e172c30583ba6b8aad657ed9901fc24caf3a7152eeccb2f1b4 \ + --hash=sha256:dbcd77c4d94b23e0753c5ed8deba8c69f331d4fd83f68bfc9db58bc8983f49cd \ + --hash=sha256:e36aa62b765cf9f43a003233a8c2d7ffdeb55bc62eaa0a0380475b228663a38f \ + --hash=sha256:e97cf143d74a7a5a0f143aa34039b4fecf11343eed66538610debc438685db4a \ + --hash=sha256:eb15ef40b833f5b2f19eeae65d65e191f039e71790dd565c2af2a3783f72262f \ + --hash=sha256:ec1f5a328464daf7a1e4e385e4f5652dd9b1d12405075ccba1df842f7774b4fc \ + --hash=sha256:f9374e270e2553653d710ece397df67db9d19c60d2647bcd35bfc616f1622dcd \ + --hash=sha256:fa67d821c1fd268a5a87922ef4940442513b4e6c377553506b9db3b83beebbd8 \ + --hash=sha256:fd8aafda7cdff03b905d4426b714601c0978725a19efc39f5f207b86d188ba01 \ + --hash=sha256:ff2f1b7c963961d41403b650842dc2039175b906ab2093635d8319bef0b7d620 starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 @@ -626,9 +626,9 @@ structlog==23.3.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index 81cb8a3c723..a8bf9b97b9e 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -608,69 +608,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.0" +version = "1.60.1" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, - {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, - {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, - {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, - {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, - {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, - {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, - {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, - {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, - {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, - {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, - {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, - {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, - {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, - {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, - {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, - {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, - {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, - {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, - {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, - {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, - {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, - {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, - {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, + {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, + {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, + {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, + {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, + {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, + {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, + {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, + {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, + {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, + {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, + {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, + {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, + {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, + {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, + {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, + {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, + {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, + {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, + {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, + {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, + {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, + {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, + {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, + {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, + {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, + {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, + {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, + {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, + {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, + {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, + {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, + {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, + {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, + {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, + {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, + {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.0)"] +protobuf = ["grpcio-tools (>=1.60.1)"] [[package]] name = "h11" @@ -685,13 +685,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.3" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, ] [package.dependencies] @@ -702,7 +702,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.24.0)"] [[package]] name = "httpx" @@ -769,23 +769,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "jinja2" -version = "3.1.3" -description = "A very fast and expressive template engine." -optional = false -python-versions = ">=3.7" -files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, -] - -[package.dependencies] -MarkupSafe = ">=2.0" - -[package.extras] -i18n = ["Babel (>=2.7)"] - [[package]] name = "jsonpatch" version = "1.33" @@ -878,110 +861,6 @@ sqs = ["boto3 (>=1.26.143)", "pycurl (>=7.43.0.5)", "urllib3 (>=1.26.16)"] yaml = ["PyYAML (>=3.10)"] zookeeper = ["kazoo (>=2.8.0)"] -[[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.8" -files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "markupsafe" -version = "2.1.4" -description = "Safely add untrusted strings to HTML/XML markup." -optional = false -python-versions = ">=3.7" -files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, -] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - [[package]] name = "opentelemetry-api" version = "1.20.0" @@ -1220,17 +1099,6 @@ files = [ {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -[[package]] -name = "pathspec" -version = "0.11.2" -description = "Utility library for gitignore style pattern matching of file paths." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, -] - [[package]] name = "pika" version = "1.3.2" @@ -1298,18 +1166,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -1317,90 +1185,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -1421,21 +1289,6 @@ files = [ pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" -[[package]] -name = "pygments" -version = "2.17.2" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, -] - -[package.extras] -plugins = ["importlib-metadata"] -windows-terminal = ["colorama (>=0.4.6)"] - [[package]] name = "pyparsing" version = "3.1.1" @@ -1670,7 +1523,6 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, - {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -1695,43 +1547,6 @@ six = "*" fixture = ["fixtures"] test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "testtools"] -[[package]] -name = "rich" -version = "13.7.0" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, - {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, -] - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - -[[package]] -name = "rich-click" -version = "1.4" -description = "Format click help output nicely with rich" -optional = false -python-versions = ">=3.7" -files = [ - {file = "rich-click-1.4.tar.gz", hash = "sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260"}, - {file = "rich_click-1.4-py3-none-any.whl", hash = "sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b"}, -] - -[package.dependencies] -click = ">=7" -rich = ">=10.7.0" - -[package.extras] -dev = ["pre-commit"] -typer = ["typer (>=0.4)"] - [[package]] name = "robotframework" version = "7.0" @@ -1777,137 +1592,112 @@ robotframework = "*" [package.extras] test = ["coverage", "flake8", "flask", "pytest", "robotframework (>=3.2.1)", "six"] -[[package]] -name = "robotframework-tidy" -version = "4.8.1" -description = "Code autoformatter for Robot Framework" -optional = false -python-versions = ">=3.7" -files = [ - {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, - {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, -] - -[package.dependencies] -click = "==8.1.*" -colorama = ">=0.4.3,<0.4.7" -jinja2 = ">=3.1.3,<4.0" -pathspec = ">=0.9.0,<0.12.2" -rich-click = ">=1.4,<1.7.4" -robotframework = ">=4.0" -tomli = "==2.0.*" - -[package.extras] -dev = ["coverage", "invoke", "jinja2", "packaging (>=21.0)", "pre-commit", "pyflakes (>=2.4,<3.3)", "pylama", "pytest", "tomli-w (==1.0.*)"] -doc = ["furo", "sphinx", "sphinx-copybutton (==0.5.2)", "sphinx-design"] -generate-config = ["tomli-w (==1.0.*)"] - [[package]] name = "rpds-py" -version = "0.17.1" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, - {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, - {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, - {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, - {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, - {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, - {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, - {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, - {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, - {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, - {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, - {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, - {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] @@ -2091,28 +1881,29 @@ files = [ [[package]] name = "tzdata" -version = "2023.4" +version = "2024.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, - {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -2148,18 +1939,18 @@ files = [ [[package]] name = "waitress" -version = "2.1.2" +version = "3.0.0" description = "Waitress WSGI server" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "waitress-2.1.2-py3-none-any.whl", hash = "sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a"}, - {file = "waitress-2.1.2.tar.gz", hash = "sha256:780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba"}, + {file = "waitress-3.0.0-py3-none-any.whl", hash = "sha256:2a06f242f4ba0cc563444ca3d1998959447477363a2d7e9b8b4d75d35cfd1669"}, + {file = "waitress-3.0.0.tar.gz", hash = "sha256:005da479b04134cdd9dd602d1ee7c49d79de0537610d653674cc6cbde222b8a1"}, ] [package.extras] docs = ["Sphinx (>=1.8.1)", "docutils", "pylons-sphinx-themes (>=1.0.9)"] -testing = ["coverage (>=5.0)", "pytest", "pytest-cover"] +testing = ["coverage (>=5.0)", "pytest", "pytest-cov"] [[package]] name = "wcwidth" @@ -2304,4 +2095,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "bb5efa3f0d39db3ddd79f5efc3710abfdea9ca6bae5c549582d6ebcd4556f8a0" +content-hash = "78465faa001ff609a18955f9117fd7a2cafcf517ba198ad7aad53807a1d71f10" diff --git a/octopoes/pyproject.toml b/octopoes/pyproject.toml index ad25d000250..3a48c68d86b 100644 --- a/octopoes/pyproject.toml +++ b/octopoes/pyproject.toml @@ -39,7 +39,6 @@ pydantic-settings = "^2.0.3" requests-mock = "^1.10.0" robotframework = "^7.0" robotframework-requests = "^0.9.3" -robotframework-tidy = "^4.8.1" robotframework-httplibrary = "^0.4.2" pytest = "^8.0.0" pytest-cov = "^4.0.0" diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index 6ae67c88edf..7c19374f1f2 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -131,7 +131,7 @@ click-repl==0.3.0 ; python_version >= "3.10" and python_version < "4.0" \ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ @@ -264,67 +264,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ + --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -337,9 +337,6 @@ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ - --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 jsonpatch==1.33 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade \ --hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c @@ -355,73 +352,6 @@ jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ kombu==5.3.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0eac1bbb464afe6fb0924b21bf79460416d25d8abc52546d4f16cad94f789488 \ --hash=sha256:30e470f1a6b49c70dc6f6d13c3e4cc4e178aa6c469ceb6bcd55645385fc84b93 -markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ - --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 -mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ - --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -464,9 +394,6 @@ opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pathspec==0.11.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ - --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0779a7c1fafd805672796085560d290213a465e4f6f76a6fb19e378d8041a14f \ --hash=sha256:b2a327ddddf8570b4965b3576ac77091b850262d34ce8c1d8cb4e4146aa4145f @@ -488,95 +415,92 @@ protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ - --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db @@ -656,131 +580,121 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ - --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests-mock==1.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4 \ --hash=sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ - --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 -rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ - --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 robotframework-httplibrary==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f45c9ac8d5a56386a36dc354b7491ee54bf068ff525c8011cb83184c19f56aae robotframework-requests==0.9.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ - --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 robotframework==7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e setuptools==67.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \ --hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102 @@ -841,27 +755,27 @@ starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cb271ca8d06ea1630a1361b58edad14e0cf81f34ce3c90b052854528fe2a281 \ --hash=sha256:4df1c65b95be61d59428e8611e955e54e6f1d4483d3e8d5733d3a9062155e910 -tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_full_version <= "3.11.0a6" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ - --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ + --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d vine==5.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc \ --hash=sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0 -waitress==2.1.2 ; python_version >= "3.10" and python_version < "4" \ - --hash=sha256:7500c9625927c8ec60f54377d590f67b30c8e70ef4b8894214ac6e4cad233d2a \ - --hash=sha256:780a4082c5fbc0fde6a2fcfe5e26e6efc1e8f425730863c04085769781f51eba +waitress==3.0.0 ; python_version >= "3.10" and python_version < "4" \ + --hash=sha256:005da479b04134cdd9dd602d1ee7c49d79de0537610d653674cc6cbde222b8a1 \ + --hash=sha256:2a06f242f4ba0cc563444ca3d1998959447477363a2d7e9b8b4d75d35cfd1669 wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index fb9ab75fca1..651f4953bb0 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -208,61 +208,61 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ + --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ + --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ + --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ + --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ + --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ + --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ + --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ + --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ + --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ + --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ + --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ + --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ + --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ + --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ + --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ + --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ + --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ + --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ + --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ + --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ + --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ + --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ + --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ + --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ + --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ + --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ + --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ + --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ + --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ + --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ + --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ + --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ + --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ + --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ + --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ + --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ + --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ + --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ + --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ + --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ + --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ + --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ + --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ + --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ + --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ + --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ + --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ + --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ + --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ + --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ + --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ + --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ + --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -341,92 +341,92 @@ protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db @@ -491,111 +491,110 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ - --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e setuptools==67.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \ --hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102 @@ -656,12 +655,12 @@ tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ - --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ + --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/rocky/poetry.lock b/rocky/poetry.lock index 6c58292b656..c6121388fba 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -11,28 +11,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[[package]] -name = "anyio" -version = "4.2.0" -description = "High level compatibility layer for multiple asynchronous event loop implementations" -optional = false -python-versions = ">=3.8" -files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, -] - -[package.dependencies] -exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} -idna = ">=2.8" -sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["Sphinx (>=7)", "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.17)"] -trio = ["trio (>=0.23)"] - [[package]] name = "arabic-reshaper" version = "3.0.0" @@ -47,16 +25,6 @@ files = [ [package.extras] with-fonttools = ["fonttools (>=4.0)"] -[[package]] -name = "ares" -version = "0.7.1" -description = "Python wrapper around https://cve.circl.lu." -optional = false -python-versions = "*" -files = [ - {file = "ares-0.7.1.tar.gz", hash = "sha256:28823cad841c96f0a5f26452eaddf5831be8363f3128cd5b1403bf70bcb87965"}, -] - [[package]] name = "asgiref" version = "3.7.2" @@ -353,17 +321,6 @@ files = [ [package.dependencies] pycparser = "*" -[[package]] -name = "chardet" -version = "5.2.0" -description = "Universal encoding detector for Python 3" -optional = false -python-versions = ">=3.7" -files = [ - {file = "chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970"}, - {file = "chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7"}, -] - [[package]] name = "charset-normalizer" version = "3.3.2" @@ -557,43 +514,43 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "42.0.1" +version = "42.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77"}, - {file = "cryptography-42.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009"}, - {file = "cryptography-42.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407"}, - {file = "cryptography-42.0.1-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa"}, - {file = "cryptography-42.0.1-cp37-abi3-win32.whl", hash = "sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453"}, - {file = "cryptography-42.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302"}, - {file = "cryptography-42.0.1-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca"}, - {file = "cryptography-42.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323"}, - {file = "cryptography-42.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49"}, - {file = "cryptography-42.0.1-cp39-abi3-win32.whl", hash = "sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881"}, - {file = "cryptography-42.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6"}, - {file = "cryptography-42.0.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f"}, - {file = "cryptography-42.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04"}, - {file = "cryptography-42.0.1.tar.gz", hash = "sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, + {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, + {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, + {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, + {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, + {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, + {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, ] [package.dependencies] @@ -611,12 +568,12 @@ test-randomorder = ["pytest-randomly"] [[package]] name = "cssbeautifier" -version = "1.14.11" +version = "1.15.0" description = "CSS unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "cssbeautifier-1.14.11.tar.gz", hash = "sha256:40544c2b62bbcb64caa5e7f37a02df95654e5ce1bcacadac4ca1f3dc89c31513"}, + {file = "cssbeautifier-1.15.0.tar.gz", hash = "sha256:7ab092581365698d1e270bdf114c268f567e63f6122dbb5f4dfc0e6ef64030ea"}, ] [package.dependencies] @@ -643,20 +600,6 @@ webencodings = "*" doc = ["sphinx", "sphinx_rtd_theme"] test = ["flake8", "isort", "pytest"] -[[package]] -name = "cwe" -version = "1.6" -description = "Common weakness enumeration wrapper for Python" -optional = false -python-versions = "*" -files = [ - {file = "cwe-1.6-py3-none-any.whl", hash = "sha256:bad040864f52ccd494763d317eb77e7c604ce323b3a17164d43a97fea4ebb9e8"}, - {file = "cwe-1.6.tar.gz", hash = "sha256:eed7fdbe3565f975bb9ec6cef6f42cb4eb721ec6155fa954f3b1b106351d981e"}, -] - -[package.dependencies] -requests = "*" - [[package]] name = "deprecated" version = "1.2.14" @@ -878,28 +821,30 @@ Django = ">=2.2" [[package]] name = "django-two-factor-auth" -version = "1.15.5" +version = "1.16.0" description = "Complete Two-Factor Authentication for Django" optional = false python-versions = "*" files = [ - {file = "django-two-factor-auth-1.15.5.tar.gz", hash = "sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616"}, - {file = "django_two_factor_auth-1.15.5-py3-none-any.whl", hash = "sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746"}, + {file = "django-two-factor-auth-1.16.0.tar.gz", hash = "sha256:662782a4ab9f59a06afe3be04540dc8dd04e63b06f52520386a546fcad8d2d41"}, + {file = "django_two_factor_auth-1.16.0-py3-none-any.whl", hash = "sha256:bf57713232b15dc85abbed45244f372bd01de5c145159d3bee3e468af7e2b6d1"}, ] [package.dependencies] Django = ">=3.2" django-formtools = "*" -django_otp = ">=0.8.0" +django-otp = ">=0.8.0" django-phonenumber-field = "<8" qrcode = ">=4.0.0,<7.99" [package.extras] call = ["twilio (>=6.0)"] +linting = ["flake8 (<=6.99)", "isort (<=5.99)"] phonenumbers = ["phonenumbers (>=7.0.9,<8.99)"] phonenumberslite = ["phonenumberslite (>=7.0.9,<8.99)"] sms = ["twilio (>=6.0)"] -webauthn = ["pydantic (>=1.9.0,<1.99)", "webauthn (>=1.6.0,<1.99)"] +tests = ["coverage", "freezegun", "tox"] +webauthn = ["webauthn (>=2.0,<2.99)"] yubikey = ["django-otp-yubikey"] [[package]] @@ -1001,13 +946,12 @@ test = ["tox", "tox-gh-actions"] [[package]] name = "editorconfig" -version = "0.12.3" +version = "0.12.4" description = "EditorConfig File Locator and Interpreter for Python" optional = false python-versions = "*" files = [ - {file = "EditorConfig-0.12.3-py3-none-any.whl", hash = "sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1"}, - {file = "EditorConfig-0.12.3.tar.gz", hash = "sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e"}, + {file = "EditorConfig-0.12.4.tar.gz", hash = "sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80"}, ] [[package]] @@ -1044,13 +988,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "22.6.0" +version = "23.2.0" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-22.6.0-py3-none-any.whl", hash = "sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d"}, - {file = "Faker-22.6.0.tar.gz", hash = "sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26"}, + {file = "Faker-23.2.0-py3-none-any.whl", hash = "sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952"}, + {file = "Faker-23.2.0.tar.gz", hash = "sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9"}, ] [package.dependencies] @@ -1058,53 +1002,53 @@ python-dateutil = ">=2.4" [[package]] name = "fonttools" -version = "4.47.2" +version = "4.48.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df"}, - {file = "fonttools-4.47.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1"}, - {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c"}, - {file = "fonttools-4.47.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8"}, - {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670"}, - {file = "fonttools-4.47.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c"}, - {file = "fonttools-4.47.2-cp310-cp310-win32.whl", hash = "sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0"}, - {file = "fonttools-4.47.2-cp310-cp310-win_amd64.whl", hash = "sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1"}, - {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b"}, - {file = "fonttools-4.47.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac"}, - {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c"}, - {file = "fonttools-4.47.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70"}, - {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e"}, - {file = "fonttools-4.47.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703"}, - {file = "fonttools-4.47.2-cp311-cp311-win32.whl", hash = "sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c"}, - {file = "fonttools-4.47.2-cp311-cp311-win_amd64.whl", hash = "sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9"}, - {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635"}, - {file = "fonttools-4.47.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d"}, - {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb"}, - {file = "fonttools-4.47.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07"}, - {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71"}, - {file = "fonttools-4.47.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f"}, - {file = "fonttools-4.47.2-cp312-cp312-win32.whl", hash = "sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085"}, - {file = "fonttools-4.47.2-cp312-cp312-win_amd64.whl", hash = "sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4"}, - {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc"}, - {file = "fonttools-4.47.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952"}, - {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa"}, - {file = "fonttools-4.47.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b"}, - {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6"}, - {file = "fonttools-4.47.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946"}, - {file = "fonttools-4.47.2-cp38-cp38-win32.whl", hash = "sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b"}, - {file = "fonttools-4.47.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae"}, - {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6"}, - {file = "fonttools-4.47.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506"}, - {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37"}, - {file = "fonttools-4.47.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c"}, - {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899"}, - {file = "fonttools-4.47.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7"}, - {file = "fonttools-4.47.2-cp39-cp39-win32.whl", hash = "sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50"}, - {file = "fonttools-4.47.2-cp39-cp39-win_amd64.whl", hash = "sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8"}, - {file = "fonttools-4.47.2-py3-none-any.whl", hash = "sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184"}, - {file = "fonttools-4.47.2.tar.gz", hash = "sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3"}, + {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f"}, + {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e"}, + {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738"}, + {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124"}, + {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee"}, + {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2"}, + {file = "fonttools-4.48.1-cp310-cp310-win32.whl", hash = "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec"}, + {file = "fonttools-4.48.1-cp310-cp310-win_amd64.whl", hash = "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703"}, + {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61"}, + {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f"}, + {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7"}, + {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7"}, + {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01"}, + {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48"}, + {file = "fonttools-4.48.1-cp311-cp311-win32.whl", hash = "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e"}, + {file = "fonttools-4.48.1-cp311-cp311-win_amd64.whl", hash = "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a"}, + {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea"}, + {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0"}, + {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252"}, + {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81"}, + {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68"}, + {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092"}, + {file = "fonttools-4.48.1-cp312-cp312-win32.whl", hash = "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d"}, + {file = "fonttools-4.48.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5"}, + {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348"}, + {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a"}, + {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1"}, + {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31"}, + {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac"}, + {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5"}, + {file = "fonttools-4.48.1-cp38-cp38-win32.whl", hash = "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2"}, + {file = "fonttools-4.48.1-cp38-cp38-win_amd64.whl", hash = "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784"}, + {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4"}, + {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95"}, + {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d"}, + {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a"}, + {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814"}, + {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e"}, + {file = "fonttools-4.48.1-cp39-cp39-win32.whl", hash = "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199"}, + {file = "fonttools-4.48.1-cp39-cp39-win_amd64.whl", hash = "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070"}, + {file = "fonttools-4.48.1-py3-none-any.whl", hash = "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e"}, + {file = "fonttools-4.48.1.tar.gz", hash = "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a"}, ] [package.dependencies] @@ -1113,10 +1057,10 @@ brotlicffi = {version = ">=0.8.0", optional = true, markers = "platform_python_i zopfli = {version = ">=0.1.4", optional = true, markers = "extra == \"woff\""} [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] interpolatable = ["munkres", "pycairo", "scipy"] -lxml = ["lxml (>=4.0,<5)"] +lxml = ["lxml (>=4.0)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] @@ -1145,77 +1089,80 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "granian" -version = "1.0.2" +version = "1.1.0" description = "A Rust HTTP server for Python applications" optional = false python-versions = ">=3.8" files = [ - {file = "granian-1.0.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f"}, - {file = "granian-1.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf"}, - {file = "granian-1.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8"}, - {file = "granian-1.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664"}, - {file = "granian-1.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879"}, - {file = "granian-1.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032"}, - {file = "granian-1.0.2-cp310-none-win_amd64.whl", hash = "sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7"}, - {file = "granian-1.0.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5"}, - {file = "granian-1.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3"}, - {file = "granian-1.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9"}, - {file = "granian-1.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1"}, - {file = "granian-1.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582"}, - {file = "granian-1.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208"}, - {file = "granian-1.0.2-cp311-none-win_amd64.whl", hash = "sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815"}, - {file = "granian-1.0.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5"}, - {file = "granian-1.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711"}, - {file = "granian-1.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa"}, - {file = "granian-1.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f"}, - {file = "granian-1.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82"}, - {file = "granian-1.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43"}, - {file = "granian-1.0.2-cp312-none-win_amd64.whl", hash = "sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b"}, - {file = "granian-1.0.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81"}, - {file = "granian-1.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8"}, - {file = "granian-1.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720"}, - {file = "granian-1.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a"}, - {file = "granian-1.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897"}, - {file = "granian-1.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2"}, - {file = "granian-1.0.2-cp38-none-win_amd64.whl", hash = "sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9"}, - {file = "granian-1.0.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c"}, - {file = "granian-1.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149"}, - {file = "granian-1.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df"}, - {file = "granian-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc"}, - {file = "granian-1.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810"}, - {file = "granian-1.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce"}, - {file = "granian-1.0.2-cp39-none-win_amd64.whl", hash = "sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4"}, - {file = "granian-1.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852"}, - {file = "granian-1.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803"}, - {file = "granian-1.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056"}, - {file = "granian-1.0.2.tar.gz", hash = "sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7"}, + {file = "granian-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:35e2105333576ad2fc06981f81b3d843f247facc8ae6280fca9851ce3a278cd6"}, + {file = "granian-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8a413c5bd67307a630d02080c3763fc06d3f4d82ad4377f03c984550915362f"}, + {file = "granian-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b18e1d2398ab9c556eb6b2f8eb8863d8b181e249e264da5dc6ae10a51004690"}, + {file = "granian-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5872237c584d52bb72a966af6952b06a624626d78d3e1b3c02488432f9db43c"}, + {file = "granian-1.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c546eb03cdf04d217f043fe2ea60cf44084039dcc6d9a5c493a6dbf209a47942"}, + {file = "granian-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8a4e107c54597501b4cd65af7f3cc1bab9eaf4f65ea6efcff48570bcaac9d59a"}, + {file = "granian-1.1.0-cp310-none-win_amd64.whl", hash = "sha256:9245c1e4327e8dbf7a371794fb9bcbc7ee55f8b060b687f44109105190f8e95f"}, + {file = "granian-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3af0fd0e8e63763765c7c886b2d5b33480caa648382e7457fa8ffafecfe936b3"}, + {file = "granian-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25e818153faf360391b25ae897d4265fac58355b2db66289621b337c133e3eb0"}, + {file = "granian-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:408a891f477e3246a8a43c59a5f413c7af3a9552f04c09d792c1a0a1f2646759"}, + {file = "granian-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21e97cb0d9226223aa04bd681a03841e1cfc087844b3e82787e54da57ef513b"}, + {file = "granian-1.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e8919ce19ee801123a9af3c832c505771df50840157ac54b3b89e20470f2fadf"}, + {file = "granian-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:62d74597d427ba20b571a1cb1ab75014ac26ec9fbebcbc3dc8037fbe1f585e2d"}, + {file = "granian-1.1.0-cp311-none-win_amd64.whl", hash = "sha256:bc3bd8b3c78faa522f6b534ab3db38fa5e31203751699aa5658f843573d7e155"}, + {file = "granian-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:add4914ba191e011b473c223606d3a97cb6cd541ef0293246f92ea0120b5f958"}, + {file = "granian-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a774504e4edba71993a07bccec8f19f724379f774df579893ba844c637cd74f8"}, + {file = "granian-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:970366d1a12e720d12344a7f17dce7293c82e192b648bd2ac5faefe3b5ddc8d8"}, + {file = "granian-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea88063085bf6cee8ea6c6fe572c8d886d0f014bf42ae74177c32d523e721d4"}, + {file = "granian-1.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c18f3674792ef5018493abfcef4bc61fa089dcabb2c15aec6a73f4e41ea51be5"}, + {file = "granian-1.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:65906afa7c77ba96d467459d74b01f1308ead6bfe599eec962f7dcc2ddcc1e21"}, + {file = "granian-1.1.0-cp312-none-win_amd64.whl", hash = "sha256:7fedb0ca2803aace5eba2c6e9c74b32e2e15ea8a4af56cd6a58fcf4c13135b68"}, + {file = "granian-1.1.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:326b2a31e187e78946469644d075eb35f5cb6f6bcf1d6292566226e03573097d"}, + {file = "granian-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:16c8e2ba6c1daecde67a503590cf4e4c26cf7edcfb2d0aec6732e85d486f205a"}, + {file = "granian-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6ab9edda019e9fa9b82086a8cb3458e3a52a22f449ae4e3d1e37dc62822cec"}, + {file = "granian-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c05a03d09b8bee9d8b6bd46823f4bc1091947d35b858b5081bebb5d5753561f"}, + {file = "granian-1.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6090aad96a1bc34073ca15a1c54e60e7064291a5073d9b4106fc7bd2defc8a50"}, + {file = "granian-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:638a03a93a6ed30bda0f3afefe70bfe5f1055e5a30f05ceda4a0873ba63bb431"}, + {file = "granian-1.1.0-cp38-none-win_amd64.whl", hash = "sha256:85e9a305643133ec655f13cb8f462ea12b4cabd88210366a1367a3dae7bbdb3d"}, + {file = "granian-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:990a6f55668e754b8c09fb5498fde658cd19f261120d760f2a68ec1b2ba8233b"}, + {file = "granian-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:00738b68b68cb711b44f38605f42dbe7883bda126e5469ee0c8484fc94f7fdf7"}, + {file = "granian-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21ffbb8ca922fce363f40be482e9696fc5c2750b5ba030414877aa598d40aca2"}, + {file = "granian-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7efe7a230ea4935bbf8a583aa11a1e7525e6e8731c01dc3859d068d7666a66eb"}, + {file = "granian-1.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0a805ffe93271e68d87fdc680440c8b5322a25f76e9ddd1bf6fe5de1fccf3abb"}, + {file = "granian-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53659ff6e0bb425c03c529b495f1cccaf354b18c8f0ff8d68bbe22985489c5b9"}, + {file = "granian-1.1.0-cp39-none-win_amd64.whl", hash = "sha256:ada8aa662babcb1acb05168b3afa8e8e97ba16a69985538ebba63fe2c9afdcfa"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1210114981e8efdbd05e0afd7ac18a26528af95c1844bfc8b7c7d9f61503a799"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:e571a953474558dc878871476170eaed55d59c273925ec9260286faa11384884"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51207108f4281b838bb8e8360fe5f5d259a3e8b842a7a784c1050f8dfff95881"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3a2d49a24f69a390a3cd89d3659e60a07a999408bd3316f49832fe4692432f2"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:605c02e4dbcee2612bb0be983d586ecbeadce882c3878d23dfbe9b92af934449"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0b4d702d3ccbe7149640990966f69b7dbb94b50fbe335b5e68ccd674cc7dbc3a"}, + {file = "granian-1.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:860afd06bc2ef5d0549d7037dc5763922c83766e23089d14276f54d3ef3791cb"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e01fc98c74a36e7027822fd183e2cc105f0833bb26997aa7a1164def44a24a4f"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:6312a2b30b9dd024210b526c55b7eb7f1978c602a83f37503207ab708298f80a"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e25ee4f54b706cb18654c884c7d4b86c624076c16aada1164bf70b13573d4f04"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e946cfaca0a20ef261d9783193b28f496b64aaaeb32cde6b79b894c04078931"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:944b3cdbbd4290cbe788acb455fc72eaa1eb407b79d99b4a029e2a9493b805f9"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615bc3dbea358af08cd4cdb154f0fb52ddef74e4f29148f99708be11b5a68273"}, + {file = "granian-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:43c4e687f881eef0cea6830a16feb775fffd095613e877259383b738272cac6d"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:53bd4cbf04d3b9e1de6cb1af3d8e879624780ad80b4ae790f0fa01bb5b3bc9a3"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b4e53619d0b3830d69ce3bd62e00eaeac6838d54402de6dfb4e2c0996c2b67e0"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14c9e6ae6771e77ac5442739770f31740ffe638418b8e12e355ae61b02594681"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b259dbf9719218a2e7b651b1aafa87bca4aa1e87d1e37f9eb936f540ac6be66"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:526bf2c03fe5280a0cd313d82db8c7f6116499e84ea0f50bbf5d07357962b4e0"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0a0ee77479657c39d344744ac71f8e145287433fcf82884b7a253c8fa2cc4f17"}, + {file = "granian-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b2eec63ce6dfad273f7cc2c41825da490d79d4462500560fb5afd7fed0ab063f"}, + {file = "granian-1.1.0.tar.gz", hash = "sha256:ba7fbc76e9845dee40c7f8b28925db5b3324ff9bc17b76111b699a1642e21ce7"}, ] [package.dependencies] typer = ">=0.4.2" uvloop = {version = ">=0.18.0,<0.19.0", markers = "sys_platform != \"win32\" and platform_python_implementation == \"CPython\""} -watchfiles = ">=0.21,<1.0" [package.extras] +all = ["granian[pname,reload]"] +dev = ["granian[all,lint,test]"] lint = ["ruff (>=0.1.0,<0.2.0)"] +pname = ["setproctitle (>=1.3.3,<1.4.0)"] +reload = ["watchfiles (>=0.21,<1.0)"] test = ["httpx (>=0.25.0,<0.26.0)", "pytest (>=7.4.2,<7.5.0)", "pytest-asyncio (>=0.21.1,<0.22.0)", "websockets (>=11.0,<12.0)"] [[package]] @@ -1388,21 +1335,6 @@ files = [ {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] -[[package]] -name = "image" -version = "1.5.33" -description = "Django application that provides cropping, resizing, thumbnailing, overlays and masking for images and videos with the ability to set the center of attention," -optional = false -python-versions = "*" -files = [ - {file = "image-1.5.33.tar.gz", hash = "sha256:baa2e09178277daa50f22fd6d1d51ec78f19c12688921cb9ab5808743f097126"}, -] - -[package.dependencies] -django = "*" -pillow = "*" -six = "*" - [[package]] name = "importlib-metadata" version = "6.11.0" @@ -1462,12 +1394,12 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsbeautifier" -version = "1.14.11" +version = "1.15.0" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "jsbeautifier-1.14.11.tar.gz", hash = "sha256:6b632581ea60dd1c133cd25a48ad187b4b91f526623c4b0fb5443ef805250505"}, + {file = "jsbeautifier-1.15.0.tar.gz", hash = "sha256:b44acb3e890799985999fa38247b6ed5766d8a7de912b6f1ff8d41ca3cd1b53f"}, ] [package.dependencies] @@ -1703,71 +1635,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -2114,13 +2046,13 @@ files = [ [[package]] name = "phonenumbers" -version = "8.13.29" +version = "8.13.30" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." optional = false python-versions = "*" files = [ - {file = "phonenumbers-8.13.29-py2.py3-none-any.whl", hash = "sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293"}, - {file = "phonenumbers-8.13.29.tar.gz", hash = "sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf"}, + {file = "phonenumbers-8.13.30-py2.py3-none-any.whl", hash = "sha256:273a969a863e9e38d4944b26fc277f408dc9aa84faa04996266efa4021adea00"}, + {file = "phonenumbers-8.13.30.tar.gz", hash = "sha256:175fcaa89780c9cb6e089fe61de960396c9fc0c01845aea26400975fb10a8ea8"}, ] [[package]] @@ -2294,18 +2226,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -2313,90 +2245,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -2531,20 +2463,6 @@ cffi = ">=1.4.1" docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] -[[package]] -name = "pyotp" -version = "2.9.0" -description = "Python One Time Password Library" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyotp-2.9.0-py3-none-any.whl", hash = "sha256:81c2e5865b8ac55e825b0358e496e1d9387c811e85bb40e71a3b29b288963612"}, - {file = "pyotp-2.9.0.tar.gz", hash = "sha256:346b6642e0dbdde3b4ff5a930b664ca82abfa116356ed48cc42c7d6590d36f63"}, -] - -[package.extras] -test = ["coverage", "mypy", "ruff", "wheel"] - [[package]] name = "pyparsing" version = "3.1.1" @@ -2673,13 +2591,13 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale [[package]] name = "pytest-django" -version = "4.7.0" +version = "4.8.0" description = "A Django plugin for pytest." optional = false python-versions = ">=3.8" files = [ - {file = "pytest-django-4.7.0.tar.gz", hash = "sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8"}, - {file = "pytest_django-4.7.0-py3-none-any.whl", hash = "sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2"}, + {file = "pytest-django-4.8.0.tar.gz", hash = "sha256:5d054fe011c56f3b10f978f41a8efb2e5adfc7e680ef36fb571ada1f24779d90"}, + {file = "pytest_django-4.8.0-py3-none-any.whl", hash = "sha256:ca1ddd1e0e4c227cf9e3e40a6afc6d106b3e70868fd2ac5798a22501271cd0c7"}, ] [package.dependencies] @@ -2798,13 +2716,13 @@ cli = ["click (>=5.0)"] [[package]] name = "pytz" -version = "2023.4" +version = "2024.1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.4-py2.py3-none-any.whl", hash = "sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a"}, - {file = "pytz-2023.4.tar.gz", hash = "sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] @@ -3202,17 +3120,17 @@ files = [ [[package]] name = "robotframework-assertion-engine" -version = "1.0.0" +version = "3.0.3" description = "Generic way to create meaningful and easy to use assertions for the Robot Framework libraries." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8.1,<4.0" files = [ - {file = "robotframework-assertion-engine-1.0.0.tar.gz", hash = "sha256:db97cf47f5d6d84f8a5f0c8c3d8af9e0d994b25ea00a6ddfa20c3f1bbeaf3c8d"}, - {file = "robotframework_assertion_engine-1.0.0-py3-none-any.whl", hash = "sha256:26342d7afec1c670bae1a7a65e38b93e9312019ea31524ed7f9f579ccefd1ee6"}, + {file = "robotframework_assertion_engine-3.0.3-py3-none-any.whl", hash = "sha256:3cd8962744ea4f307feadd596266c1d563e87b586ed61803c9445295ab15a0cd"}, + {file = "robotframework_assertion_engine-3.0.3.tar.gz", hash = "sha256:1c608d4c69d96520986a1ddc6def0fc7f7e849520f1e6882a633b51dbb98fd88"}, ] [package.dependencies] -robotframework = ">=5.0.1,<7.0.0" +robotframework = ">=5.0.1" robotframework-pythonlibcore = ">=3.0.0,<5.0.0" [[package]] @@ -3294,13 +3212,13 @@ files = [ [[package]] name = "robotframework-tidy" -version = "4.8.1" +version = "4.9.0" description = "Code autoformatter for Robot Framework" optional = false python-versions = ">=3.7" files = [ - {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, - {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, + {file = "robotframework-tidy-4.9.0.tar.gz", hash = "sha256:bffb592ba18f573975457fed43dc51b8d33fa298efffb63ef0a8203f7b2790cf"}, + {file = "robotframework_tidy-4.9.0-py3-none-any.whl", hash = "sha256:eebc6663cc7246059bc2fec501f33ca782e9e19b01a8c1b50a50778d31765d6d"}, ] [package.dependencies] @@ -3309,7 +3227,7 @@ colorama = ">=0.4.3,<0.4.7" jinja2 = ">=3.1.3,<4.0" pathspec = ">=0.9.0,<0.12.2" rich-click = ">=1.4,<1.7.4" -robotframework = ">=4.0" +robotframework = ">=4.0,<8.0" tomli = "==2.0.*" [package.extras] @@ -3319,126 +3237,126 @@ generate-config = ["tomli-w (==1.0.*)"] [[package]] name = "rpds-py" -version = "0.17.1" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.17.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d"}, - {file = "rpds_py-0.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9"}, - {file = "rpds_py-0.17.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394"}, - {file = "rpds_py-0.17.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59"}, - {file = "rpds_py-0.17.1-cp310-none-win32.whl", hash = "sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d"}, - {file = "rpds_py-0.17.1-cp310-none-win_amd64.whl", hash = "sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b"}, - {file = "rpds_py-0.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8"}, - {file = "rpds_py-0.17.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd"}, - {file = "rpds_py-0.17.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea"}, - {file = "rpds_py-0.17.1-cp311-none-win32.whl", hash = "sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518"}, - {file = "rpds_py-0.17.1-cp311-none-win_amd64.whl", hash = "sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf"}, - {file = "rpds_py-0.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9"}, - {file = "rpds_py-0.17.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253"}, - {file = "rpds_py-0.17.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23"}, - {file = "rpds_py-0.17.1-cp312-none-win32.whl", hash = "sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1"}, - {file = "rpds_py-0.17.1-cp312-none-win_amd64.whl", hash = "sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d"}, - {file = "rpds_py-0.17.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae"}, - {file = "rpds_py-0.17.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde"}, - {file = "rpds_py-0.17.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6"}, - {file = "rpds_py-0.17.1-cp38-none-win32.whl", hash = "sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a"}, - {file = "rpds_py-0.17.1-cp38-none-win_amd64.whl", hash = "sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a"}, - {file = "rpds_py-0.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256"}, - {file = "rpds_py-0.17.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772"}, - {file = "rpds_py-0.17.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b"}, - {file = "rpds_py-0.17.1-cp39-none-win32.whl", hash = "sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f"}, - {file = "rpds_py-0.17.1-cp39-none-win_amd64.whl", hash = "sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6"}, - {file = "rpds_py-0.17.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb"}, - {file = "rpds_py-0.17.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296"}, - {file = "rpds_py-0.17.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68"}, - {file = "rpds_py-0.17.1.tar.gz", hash = "sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -3452,17 +3370,6 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -[[package]] -name = "sniffio" -version = "1.3.0" -description = "Sniff out which async library your code is running under" -optional = false -python-versions = ">=3.7" -files = [ - {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, - {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, -] - [[package]] name = "soupsieve" version = "2.5" @@ -3551,26 +3458,15 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] -[[package]] -name = "toolz" -version = "0.12.1" -description = "List processing tools and functional utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, - {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, -] - [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.2" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -3616,13 +3512,13 @@ files = [ [[package]] name = "tzdata" -version = "2023.4" +version = "2024.1" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2023.4-py2.py3-none-any.whl", hash = "sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3"}, - {file = "tzdata-2023.4.tar.gz", hash = "sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9"}, + {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, + {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] [[package]] @@ -3655,17 +3551,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -3718,93 +3615,6 @@ files = [ docs = ["Sphinx (>=4.1.2,<4.2.0)", "sphinx-rtd-theme (>=0.5.2,<0.6.0)", "sphinxcontrib-asyncio (>=0.3.0,<0.4.0)"] test = ["Cython (>=0.29.36,<0.30.0)", "aiohttp (==3.9.0b0)", "aiohttp (>=3.8.1)", "flake8 (>=5.0,<6.0)", "mypy (>=0.800)", "psutil", "pyOpenSSL (>=23.0.0,<23.1.0)", "pycodestyle (>=2.9.0,<2.10.0)"] -[[package]] -name = "watchfiles" -version = "0.21.0" -description = "Simple, modern and high performance file watching and code reload in python." -optional = false -python-versions = ">=3.8" -files = [ - {file = "watchfiles-0.21.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa"}, - {file = "watchfiles-0.21.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d"}, - {file = "watchfiles-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9"}, - {file = "watchfiles-0.21.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9"}, - {file = "watchfiles-0.21.0-cp310-none-win32.whl", hash = "sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293"}, - {file = "watchfiles-0.21.0-cp310-none-win_amd64.whl", hash = "sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7"}, - {file = "watchfiles-0.21.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d"}, - {file = "watchfiles-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0"}, - {file = "watchfiles-0.21.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365"}, - {file = "watchfiles-0.21.0-cp311-none-win32.whl", hash = "sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400"}, - {file = "watchfiles-0.21.0-cp311-none-win_amd64.whl", hash = "sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe"}, - {file = "watchfiles-0.21.0-cp311-none-win_arm64.whl", hash = "sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a"}, - {file = "watchfiles-0.21.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7"}, - {file = "watchfiles-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235"}, - {file = "watchfiles-0.21.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7"}, - {file = "watchfiles-0.21.0-cp312-none-win32.whl", hash = "sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3"}, - {file = "watchfiles-0.21.0-cp312-none-win_amd64.whl", hash = "sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094"}, - {file = "watchfiles-0.21.0-cp312-none-win_arm64.whl", hash = "sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99"}, - {file = "watchfiles-0.21.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765"}, - {file = "watchfiles-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19"}, - {file = "watchfiles-0.21.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0"}, - {file = "watchfiles-0.21.0-cp38-none-win32.whl", hash = "sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214"}, - {file = "watchfiles-0.21.0-cp38-none-win_amd64.whl", hash = "sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e"}, - {file = "watchfiles-0.21.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c"}, - {file = "watchfiles-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6"}, - {file = "watchfiles-0.21.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49"}, - {file = "watchfiles-0.21.0-cp39-none-win32.whl", hash = "sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94"}, - {file = "watchfiles-0.21.0-cp39-none-win_amd64.whl", hash = "sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c"}, - {file = "watchfiles-0.21.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895"}, - {file = "watchfiles-0.21.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85"}, - {file = "watchfiles-0.21.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097"}, - {file = "watchfiles-0.21.0.tar.gz", hash = "sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3"}, -] - -[package.dependencies] -anyio = ">=3.0.0" - [[package]] name = "wcwidth" version = "0.2.13" @@ -3818,13 +3628,13 @@ files = [ [[package]] name = "weasyprint" -version = "60.2" +version = "61.0" description = "The Awesome Document Factory" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "weasyprint-60.2-py3-none-any.whl", hash = "sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705"}, - {file = "weasyprint-60.2.tar.gz", hash = "sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126"}, + {file = "weasyprint-61.0-py3-none-any.whl", hash = "sha256:1dd5e929389b7ebcbff3088da7af13ae7ab201dce3a2faca7832b1dd5cec60ea"}, + {file = "weasyprint-61.0.tar.gz", hash = "sha256:d91b11a05426fef1d63de826f30a80521d48c6a356455d338c2c429989fa586d"}, ] [package.dependencies] @@ -3852,20 +3662,6 @@ files = [ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, ] -[[package]] -name = "wheel" -version = "0.40.0" -description = "A built-package format for Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "wheel-0.40.0-py3-none-any.whl", hash = "sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247"}, - {file = "wheel-0.40.0.tar.gz", hash = "sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873"}, -] - -[package.extras] -test = ["pytest (>=6.0.0)"] - [[package]] name = "whitenoise" version = "6.6.0" @@ -4074,4 +3870,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "01dabbe69c799ae069f615c6d5aa9e622df35b49831b326c3b6ced698af72094" +content-hash = "056d0d63f0f6cd8b38c21488a88189adad1e5526ba5218286b799556aba6a048" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index 9ea9a1f478a..60856e87c96 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -7,12 +7,9 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.10" -ares = "^0.7.1" asgiref = "^3.6.0" beautifulsoup4 = "^4.11.2" certifi = "^2023.7.22" -chardet = "^5.1.0" -cwe = "^1.6" Django = "^4.2.7" django-formtools = "^2.4.1" django-otp = "^1.1.3" @@ -31,7 +28,6 @@ requests = "^2.31.0" six = "^1.16.0" soupsieve = "^2.3.2.post1" sqlparse = "^0.4.4" -toolz = "^0.12.0" typing-extensions = "^4.4.0" urllib3 = "^2.0.3" xhtml2pdf = "^0.2.11" @@ -43,7 +39,6 @@ djangorestframework = "^3.14.0" django-tagulous = "^1.3.3" drf-standardized-errors = "^0.12.5" django-compressor = { git = "https://github.com/dekkers/django-compressor", rev = "620bc0ab86590f8981dd24456a70951c9bdbf91f" } -pyparsing = "^3.1.1" django-weasyprint = "^2.2.1" strenum = "^0.4.15" django-rest-knox = { git = "https://github.com/jazzband/django-rest-knox", rev = "dd7b062147bc4b9718e22d5acd6cf1301a1036b9" } @@ -62,6 +57,7 @@ opentelemetry-instrumentation = "^0.41b0" opentelemetry-instrumentation-fastapi = "^0.41b0" granian = "^1.0.2" pydantic-settings = "^2.0.3" +pyparsing = "^3.1.1" [tool.poetry.group.dev.dependencies] @@ -69,10 +65,7 @@ djlint = "^1.32.1" robotframework-tidy = "^4.1.0" # Robot Framework dependencies -wheel = "^0.40.0" PyNaCl = "^1.5.0" -Image = "^1.5.33" -pyotp = "^2.8.0" robotframework = "^6.1" robotframework-browser = "^16.2.0" robotframework-debuglibrary = "^2.3.0" diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index c4b4b8f6d66..bcb448cb7da 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -1,14 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 -ares==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:28823cad841c96f0a5f26452eaddf5831be8363f3128cd5b1403bf70bcb87965 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -195,9 +190,6 @@ cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -chardet==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ - --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -348,47 +340,44 @@ coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 -cssbeautifier==1.14.11 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:40544c2b62bbcb64caa5e7f37a02df95654e5ce1bcacadac4ca1f3dc89c31513 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 +cssbeautifier==1.15.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:7ab092581365698d1e270bdf114c268f567e63f6122dbb5f4dfc0e6ef64030ea cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 -cwe==1.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:bad040864f52ccd494763d317eb77e7c604ce323b3a17164d43a97fea4ebb9e8 \ - --hash=sha256:eed7fdbe3565f975bb9ec6cef6f42cb4eb721ec6155fa954f3b1b106351d981e deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -419,9 +408,9 @@ django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc django-tagulous==1.3.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ - --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 +django-two-factor-auth==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:662782a4ab9f59a06afe3be04540dc8dd04e63b06f52520386a546fcad8d2d41 \ + --hash=sha256:bf57713232b15dc85abbed45244f372bd01de5c145159d3bee3e468af7e2b6d1 django-weasyprint==2.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a @@ -440,122 +429,121 @@ dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d -editorconfig==0.12.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:57f8ce78afcba15c8b18d46b5170848c88d56fd38f05c2ec60dbbfcb8996e89e \ - --hash=sha256:6b0851425aa875b08b16789ee0eeadbd4ab59666e9ebe728e526314c4a2e52c1 +editorconfig==0.12.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:24857fa1793917dd9ccf0c7810a07e05404ce9b823521c7dce22a4fb5d125f80 exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==22.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ - --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 -fonttools[woff]==4.47.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ - --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ - --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ - --hash=sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae \ - --hash=sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b \ - --hash=sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc \ - --hash=sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b \ - --hash=sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07 \ - --hash=sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70 \ - --hash=sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71 \ - --hash=sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df \ - --hash=sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6 \ - --hash=sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1 \ - --hash=sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670 \ - --hash=sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7 \ - --hash=sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6 \ - --hash=sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635 \ - --hash=sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899 \ - --hash=sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50 \ - --hash=sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9 \ - --hash=sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085 \ - --hash=sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb \ - --hash=sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c \ - --hash=sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3 \ - --hash=sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184 \ - --hash=sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8 \ - --hash=sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506 \ - --hash=sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c \ - --hash=sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c \ - --hash=sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b \ - --hash=sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0 \ - --hash=sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c \ - --hash=sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa \ - --hash=sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f \ - --hash=sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4 \ - --hash=sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c \ - --hash=sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1 \ - --hash=sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946 \ - --hash=sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d \ - --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ - --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ - --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 +faker==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952 \ + --hash=sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9 +fonttools[woff]==4.48.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252 \ + --hash=sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea \ + --hash=sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4 \ + --hash=sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e \ + --hash=sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac \ + --hash=sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61 \ + --hash=sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e \ + --hash=sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d \ + --hash=sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348 \ + --hash=sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee \ + --hash=sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199 \ + --hash=sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01 \ + --hash=sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2 \ + --hash=sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81 \ + --hash=sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814 \ + --hash=sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070 \ + --hash=sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68 \ + --hash=sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5 \ + --hash=sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7 \ + --hash=sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f \ + --hash=sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a \ + --hash=sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1 \ + --hash=sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e \ + --hash=sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a \ + --hash=sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092 \ + --hash=sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31 \ + --hash=sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7 \ + --hash=sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48 \ + --hash=sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2 \ + --hash=sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec \ + --hash=sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a \ + --hash=sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f \ + --hash=sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5 \ + --hash=sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0 \ + --hash=sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d \ + --hash=sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a \ + --hash=sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738 \ + --hash=sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95 \ + --hash=sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e \ + --hash=sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124 \ + --hash=sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784 \ + --hash=sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703 googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -granian==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ - --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ - --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ - --hash=sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3 \ - --hash=sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056 \ - --hash=sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce \ - --hash=sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032 \ - --hash=sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde \ - --hash=sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81 \ - --hash=sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149 \ - --hash=sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa \ - --hash=sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020 \ - --hash=sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3 \ - --hash=sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7 \ - --hash=sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815 \ - --hash=sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720 \ - --hash=sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2 \ - --hash=sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a \ - --hash=sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9 \ - --hash=sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf \ - --hash=sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b \ - --hash=sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810 \ - --hash=sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7 \ - --hash=sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82 \ - --hash=sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43 \ - --hash=sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12 \ - --hash=sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926 \ - --hash=sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5 \ - --hash=sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb \ - --hash=sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897 \ - --hash=sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f \ - --hash=sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5 \ - --hash=sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb \ - --hash=sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f \ - --hash=sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1 \ - --hash=sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711 \ - --hash=sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803 \ - --hash=sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208 \ - --hash=sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df \ - --hash=sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc \ - --hash=sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386 \ - --hash=sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed \ - --hash=sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9 \ - --hash=sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c \ - --hash=sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f \ - --hash=sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8 \ - --hash=sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d \ - --hash=sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879 \ - --hash=sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe \ - --hash=sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664 \ - --hash=sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a \ - --hash=sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167 \ - --hash=sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4 \ - --hash=sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda \ - --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ - --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ - --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 +granian==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00738b68b68cb711b44f38605f42dbe7883bda126e5469ee0c8484fc94f7fdf7 \ + --hash=sha256:0a0ee77479657c39d344744ac71f8e145287433fcf82884b7a253c8fa2cc4f17 \ + --hash=sha256:0a805ffe93271e68d87fdc680440c8b5322a25f76e9ddd1bf6fe5de1fccf3abb \ + --hash=sha256:0b4d702d3ccbe7149640990966f69b7dbb94b50fbe335b5e68ccd674cc7dbc3a \ + --hash=sha256:1210114981e8efdbd05e0afd7ac18a26528af95c1844bfc8b7c7d9f61503a799 \ + --hash=sha256:14c9e6ae6771e77ac5442739770f31740ffe638418b8e12e355ae61b02594681 \ + --hash=sha256:16c8e2ba6c1daecde67a503590cf4e4c26cf7edcfb2d0aec6732e85d486f205a \ + --hash=sha256:1c05a03d09b8bee9d8b6bd46823f4bc1091947d35b858b5081bebb5d5753561f \ + --hash=sha256:1e946cfaca0a20ef261d9783193b28f496b64aaaeb32cde6b79b894c04078931 \ + --hash=sha256:21ffbb8ca922fce363f40be482e9696fc5c2750b5ba030414877aa598d40aca2 \ + --hash=sha256:25e818153faf360391b25ae897d4265fac58355b2db66289621b337c133e3eb0 \ + --hash=sha256:326b2a31e187e78946469644d075eb35f5cb6f6bcf1d6292566226e03573097d \ + --hash=sha256:35e2105333576ad2fc06981f81b3d843f247facc8ae6280fca9851ce3a278cd6 \ + --hash=sha256:3af0fd0e8e63763765c7c886b2d5b33480caa648382e7457fa8ffafecfe936b3 \ + --hash=sha256:3f6ab9edda019e9fa9b82086a8cb3458e3a52a22f449ae4e3d1e37dc62822cec \ + --hash=sha256:408a891f477e3246a8a43c59a5f413c7af3a9552f04c09d792c1a0a1f2646759 \ + --hash=sha256:43c4e687f881eef0cea6830a16feb775fffd095613e877259383b738272cac6d \ + --hash=sha256:51207108f4281b838bb8e8360fe5f5d259a3e8b842a7a784c1050f8dfff95881 \ + --hash=sha256:526bf2c03fe5280a0cd313d82db8c7f6116499e84ea0f50bbf5d07357962b4e0 \ + --hash=sha256:53659ff6e0bb425c03c529b495f1cccaf354b18c8f0ff8d68bbe22985489c5b9 \ + --hash=sha256:53bd4cbf04d3b9e1de6cb1af3d8e879624780ad80b4ae790f0fa01bb5b3bc9a3 \ + --hash=sha256:5b259dbf9719218a2e7b651b1aafa87bca4aa1e87d1e37f9eb936f540ac6be66 \ + --hash=sha256:5ea88063085bf6cee8ea6c6fe572c8d886d0f014bf42ae74177c32d523e721d4 \ + --hash=sha256:605c02e4dbcee2612bb0be983d586ecbeadce882c3878d23dfbe9b92af934449 \ + --hash=sha256:6090aad96a1bc34073ca15a1c54e60e7064291a5073d9b4106fc7bd2defc8a50 \ + --hash=sha256:615bc3dbea358af08cd4cdb154f0fb52ddef74e4f29148f99708be11b5a68273 \ + --hash=sha256:62d74597d427ba20b571a1cb1ab75014ac26ec9fbebcbc3dc8037fbe1f585e2d \ + --hash=sha256:6312a2b30b9dd024210b526c55b7eb7f1978c602a83f37503207ab708298f80a \ + --hash=sha256:638a03a93a6ed30bda0f3afefe70bfe5f1055e5a30f05ceda4a0873ba63bb431 \ + --hash=sha256:65906afa7c77ba96d467459d74b01f1308ead6bfe599eec962f7dcc2ddcc1e21 \ + --hash=sha256:7b18e1d2398ab9c556eb6b2f8eb8863d8b181e249e264da5dc6ae10a51004690 \ + --hash=sha256:7efe7a230ea4935bbf8a583aa11a1e7525e6e8731c01dc3859d068d7666a66eb \ + --hash=sha256:7fedb0ca2803aace5eba2c6e9c74b32e2e15ea8a4af56cd6a58fcf4c13135b68 \ + --hash=sha256:85e9a305643133ec655f13cb8f462ea12b4cabd88210366a1367a3dae7bbdb3d \ + --hash=sha256:860afd06bc2ef5d0549d7037dc5763922c83766e23089d14276f54d3ef3791cb \ + --hash=sha256:8a4e107c54597501b4cd65af7f3cc1bab9eaf4f65ea6efcff48570bcaac9d59a \ + --hash=sha256:9245c1e4327e8dbf7a371794fb9bcbc7ee55f8b060b687f44109105190f8e95f \ + --hash=sha256:944b3cdbbd4290cbe788acb455fc72eaa1eb407b79d99b4a029e2a9493b805f9 \ + --hash=sha256:970366d1a12e720d12344a7f17dce7293c82e192b648bd2ac5faefe3b5ddc8d8 \ + --hash=sha256:990a6f55668e754b8c09fb5498fde658cd19f261120d760f2a68ec1b2ba8233b \ + --hash=sha256:a3a2d49a24f69a390a3cd89d3659e60a07a999408bd3316f49832fe4692432f2 \ + --hash=sha256:a774504e4edba71993a07bccec8f19f724379f774df579893ba844c637cd74f8 \ + --hash=sha256:a8a413c5bd67307a630d02080c3763fc06d3f4d82ad4377f03c984550915362f \ + --hash=sha256:ada8aa662babcb1acb05168b3afa8e8e97ba16a69985538ebba63fe2c9afdcfa \ + --hash=sha256:add4914ba191e011b473c223606d3a97cb6cd541ef0293246f92ea0120b5f958 \ + --hash=sha256:b2eec63ce6dfad273f7cc2c41825da490d79d4462500560fb5afd7fed0ab063f \ + --hash=sha256:b4e53619d0b3830d69ce3bd62e00eaeac6838d54402de6dfb4e2c0996c2b67e0 \ + --hash=sha256:ba7fbc76e9845dee40c7f8b28925db5b3324ff9bc17b76111b699a1642e21ce7 \ + --hash=sha256:bc3bd8b3c78faa522f6b534ab3db38fa5e31203751699aa5658f843573d7e155 \ + --hash=sha256:c18f3674792ef5018493abfcef4bc61fa089dcabb2c15aec6a73f4e41ea51be5 \ + --hash=sha256:c546eb03cdf04d217f043fe2ea60cf44084039dcc6d9a5c493a6dbf209a47942 \ + --hash=sha256:c5872237c584d52bb72a966af6952b06a624626d78d3e1b3c02488432f9db43c \ + --hash=sha256:d21e97cb0d9226223aa04bd681a03841e1cfc087844b3e82787e54da57ef513b \ + --hash=sha256:e01fc98c74a36e7027822fd183e2cc105f0833bb26997aa7a1164def44a24a4f \ + --hash=sha256:e25ee4f54b706cb18654c884c7d4b86c624076c16aada1164bf70b13573d4f04 \ + --hash=sha256:e571a953474558dc878871476170eaed55d59c273925ec9260286faa11384884 \ + --hash=sha256:e8919ce19ee801123a9af3c832c505771df50840157ac54b3b89e20470f2fadf grpcio-tools==1.56.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02b23a12b91287ebea14b3685735d1d675e77c3cd365ec1771c3e9afbeba1ec6 \ --hash=sha256:0a8767e4de0f573c678313c5de075ac0e163a192bb135018e45015a22f234387 \ @@ -660,8 +648,6 @@ html5lib==1.1 ; python_version >= "3.10" and python_version < "4.0" \ idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f -image==1.5.33 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:baa2e09178277daa50f22fd6d1d51ec78f19c12688921cb9ab5808743f097126 importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b @@ -673,8 +659,8 @@ iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -jsbeautifier==1.14.11 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6b632581ea60dd1c133cd25a48ad187b4b91f526623c4b0fb5443ef805250505 +jsbeautifier==1.15.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:b44acb3e890799985999fa38247b6ed5766d8a7de912b6f1ff8d41ca3cd1b53f json5==0.9.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f \ --hash=sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02 @@ -819,67 +805,67 @@ lxml==4.9.4 ; python_version >= "3.10" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -943,9 +929,9 @@ packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ pathspec==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 -phonenumbers==8.13.29 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ - --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf +phonenumbers==8.13.30 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:175fcaa89780c9cb6e089fe61de960396c9fc0c01845aea26400975fb10a8ea8 \ + --hash=sha256:273a969a863e9e38d4944b26fc277f408dc9aa84faa04996266efa4021adea00 pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ @@ -1052,92 +1038,92 @@ psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a @@ -1161,9 +1147,6 @@ pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pyotp==2.9.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:346b6642e0dbdde3b4ff5a930b664ca82abfa116356ed48cc42c7d6590d36f63 \ - --hash=sha256:81c2e5865b8ac55e825b0358e496e1d9387c811e85bb40e71a3b29b288963612 pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db @@ -1185,9 +1168,9 @@ pytest-common-subject==1.0.6 ; python_version >= "3.10" and python_version < "4. pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest-django==4.7.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:4e1c79d5261ade2dd58d91208017cd8f62cb4710b56e012ecd361d15d5d662a2 \ - --hash=sha256:92d6fd46b1d79b54fb6b060bbb39428073396cec717d5f2e122a990d4b6aa5e8 +pytest-django==4.8.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5d054fe011c56f3b10f978f41a8efb2e5adfc7e680ef36fb571ada1f24779d90 \ + --hash=sha256:ca1ddd1e0e4c227cf9e3e40a6afc6d106b3e70868fd2ac5798a22501271cd0c7 pytest-drf==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4d6106f7f313de2e8158ca41550817ca564f1ddcf6ba68a1e2ab404e04b36282 \ --hash=sha256:4f8bd999a0d80654a55145761e5ced7601baf301fdb020ba62a25ac708fe070a @@ -1212,9 +1195,9 @@ python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pytz==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a +pytz==2024.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -1469,9 +1452,9 @@ rjsmin==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3 \ --hash=sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807 \ --hash=sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65 -robotframework-assertion-engine==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26342d7afec1c670bae1a7a65e38b93e9312019ea31524ed7f9f579ccefd1ee6 \ - --hash=sha256:db97cf47f5d6d84f8a5f0c8c3d8af9e0d994b25ea00a6ddfa20c3f1bbeaf3c8d +robotframework-assertion-engine==3.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1c608d4c69d96520986a1ddc6def0fc7f7e849520f1e6882a633b51dbb98fd88 \ + --hash=sha256:3cd8962744ea4f307feadd596266c1d563e87b586ed61803c9445295ab15a0cd robotframework-browser==16.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:cee956718a99165cb3aac18758f939a54d324199e4762f54b58c2baa71efa9e7 \ --hash=sha256:eaff862bc9798d8b40927efc2f56d61f8316821c498cc95d9840860cab4a6d69 @@ -1486,121 +1469,118 @@ robotframework-postgresqldb==2.0.0 ; python_version >= "3.10" and python_version robotframework-pythonlibcore==4.3.0 ; python_version >= "3.10" and python_version < "4" \ --hash=sha256:29aacdfc19aca812e9ace14cfb8cfd8a14298ed9fbddbeceef964c2c2e84d6c6 \ --hash=sha256:37c63c20fb296b5c202261f78c5baf91c98ee344af52f625fb975d05a16f09b1 -robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ - --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 +robotframework-tidy==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:bffb592ba18f573975457fed43dc51b8d33fa298efffb63ef0a8203f7b2790cf \ + --hash=sha256:eebc6663cc7246059bc2fec501f33ca782e9e19b01a8c1b50a50778d31765d6d robotframework==6.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3fa18f2596a4df2418c4b59abf43248327c15ed38ad8665f6a9a9c75c95d7789 \ --hash=sha256:ee0d512d557e72ed760dd075525f6226baaab309010a48f9c9bf1f416ca434f7 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 @@ -1618,30 +1598,27 @@ tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f -toolz==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ - --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d -tqdm==4.66.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386 \ - --hash=sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7 +tqdm==4.66.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9 \ + --hash=sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531 typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ - --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ - --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ + --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ + --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ @@ -1679,94 +1656,15 @@ uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == " --hash=sha256:ed3c28337d2fefc0bac5705b9c66b2702dc392f2e9a69badb1d606e7e7f773bb \ --hash=sha256:edbb4de38535f42f020da1e3ae7c60f2f65402d027a08a8c60dc8569464873a6 \ --hash=sha256:f3b18663efe0012bc4c315f1b64020e44596f5fabc281f5b0d9bc9465288559c -watchfiles==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc \ - --hash=sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365 \ - --hash=sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0 \ - --hash=sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e \ - --hash=sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124 \ - --hash=sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c \ - --hash=sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317 \ - --hash=sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094 \ - --hash=sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7 \ - --hash=sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235 \ - --hash=sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c \ - --hash=sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c \ - --hash=sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c \ - --hash=sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235 \ - --hash=sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293 \ - --hash=sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa \ - --hash=sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef \ - --hash=sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19 \ - --hash=sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8 \ - --hash=sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d \ - --hash=sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915 \ - --hash=sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429 \ - --hash=sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097 \ - --hash=sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe \ - --hash=sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0 \ - --hash=sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d \ - --hash=sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99 \ - --hash=sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1 \ - --hash=sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a \ - --hash=sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895 \ - --hash=sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94 \ - --hash=sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562 \ - --hash=sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab \ - --hash=sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360 \ - --hash=sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1 \ - --hash=sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7 \ - --hash=sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f \ - --hash=sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03 \ - --hash=sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01 \ - --hash=sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58 \ - --hash=sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052 \ - --hash=sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e \ - --hash=sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765 \ - --hash=sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6 \ - --hash=sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137 \ - --hash=sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85 \ - --hash=sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca \ - --hash=sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f \ - --hash=sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214 \ - --hash=sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7 \ - --hash=sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7 \ - --hash=sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3 \ - --hash=sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b \ - --hash=sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7 \ - --hash=sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6 \ - --hash=sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994 \ - --hash=sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9 \ - --hash=sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec \ - --hash=sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128 \ - --hash=sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c \ - --hash=sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2 \ - --hash=sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078 \ - --hash=sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3 \ - --hash=sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e \ - --hash=sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a \ - --hash=sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6 \ - --hash=sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49 \ - --hash=sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b \ - --hash=sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28 \ - --hash=sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9 \ - --hash=sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586 \ - --hash=sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400 \ - --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ - --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ - --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d wcwidth==0.2.13 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859 \ --hash=sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5 -weasyprint==60.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ - --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 +weasyprint==61.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1dd5e929389b7ebcbff3088da7af13ae7ab201dce3a2faca7832b1dd5cec60ea \ + --hash=sha256:d91b11a05426fef1d63de826f30a80521d48c6a356455d338c2c429989fa586d webencodings==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 -wheel==0.40.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:cd1196f3faee2b31968d626e1731c94f99cbdb67cf5a46e4f5656cbee7738873 \ - --hash=sha256:d236b20e7cb522daf2390fa84c55eea81c5c30190f90f29ae2ca1ad8355bf247 whitenoise[brotli]==6.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8998f7370973447fac1e8ef6e8ded2c5209a7b1f67c1012866dbcd09681c3251 \ --hash=sha256:b1f9db9bf67dc183484d760b99f4080185633136a273a03f6436034a41064146 diff --git a/rocky/requirements.txt b/rocky/requirements.txt index d371f40d46e..d6b0d29587a 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -1,14 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 -ares==0.7.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:28823cad841c96f0a5f26452eaddf5831be8363f3128cd5b1403bf70bcb87965 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -192,9 +187,6 @@ cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627 \ --hash=sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956 \ --hash=sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357 -chardet==5.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7 \ - --hash=sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -292,45 +284,42 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0b7cacc142260ada944de070ce810c3e2a438963ee3deb45aa26fd2cee94c9a4 \ - --hash=sha256:126e0ba3cc754b200a2fb88f67d66de0d9b9e94070c5bc548318c8dab6383cb6 \ - --hash=sha256:160fa08dfa6dca9cb8ad9bd84e080c0db6414ba5ad9a7470bc60fb154f60111e \ - --hash=sha256:16b9260d04a0bfc8952b00335ff54f471309d3eb9d7e8dbfe9b0bd9e26e67881 \ - --hash=sha256:25ec6e9e81de5d39f111a4114193dbd39167cc4bbd31c30471cebedc2a92c323 \ - --hash=sha256:265bdc693570b895eb641410b8fc9e8ddbce723a669236162b9d9cfb70bd8d77 \ - --hash=sha256:2dff7a32880a51321f5de7869ac9dde6b1fca00fc1fef89d60e93f215468e824 \ - --hash=sha256:2fe16624637d6e3e765530bc55caa786ff2cbca67371d306e5d0a72e7c3d0407 \ - --hash=sha256:32ea63ceeae870f1a62e87f9727359174089f7b4b01e4999750827bf10e15d60 \ - --hash=sha256:351db02c1938c8e6b1fee8a78d6b15c5ccceca7a36b5ce48390479143da3b411 \ - --hash=sha256:430100abed6d3652208ae1dd410c8396213baee2e01a003a4449357db7dc9e14 \ - --hash=sha256:4d84673c012aa698555d4710dcfe5f8a0ad76ea9dde8ef803128cc669640a2e0 \ - --hash=sha256:50aecd93676bcca78379604ed664c45da82bc1241ffb6f97f6b7392ed5bc6f04 \ - --hash=sha256:6ac8924085ed8287545cba89dc472fc224c10cc634cdf2c3e2866fe868108e77 \ - --hash=sha256:6bfd823b336fdcd8e06285ae8883d3d2624d3bdef312a0e2ef905f332f8e9302 \ - --hash=sha256:727387886c9c8de927c360a396c5edcb9340d9e960cda145fca75bdafdabd24c \ - --hash=sha256:7911586fc69d06cd0ab3f874a169433db1bc2f0e40988661408ac06c4527a986 \ - --hash=sha256:802d6f83233cf9696b59b09eb067e6b4d5ae40942feeb8e13b213c8fad47f1aa \ - --hash=sha256:8d7efb6bf427d2add2f40b6e1e8e476c17508fa8907234775214b153e69c2e11 \ - --hash=sha256:9544492e8024f29919eac2117edd8c950165e74eb551a22c53f6fdf6ba5f4cb8 \ - --hash=sha256:95d900d19a370ae36087cc728e6e7be9c964ffd8cbcb517fd1efb9c9284a6abc \ - --hash=sha256:9d61fcdf37647765086030d81872488e4cb3fafe1d2dda1d487875c3709c0a49 \ - --hash=sha256:ab6b302d51fbb1dd339abc6f139a480de14d49d50f65fdc7dff782aa8631d035 \ - --hash=sha256:b512f33c6ab195852595187af5440d01bb5f8dd57cb7a91e1e009a17f1b7ebca \ - --hash=sha256:cb2861a9364fa27d24832c718150fdbf9ce6781d7dc246a516435f57cfa31fe7 \ - --hash=sha256:d3594947d2507d4ef7a180a7f49a6db41f75fb874c2fd0e94f36b89bfd678bf2 \ - --hash=sha256:d3902c779a92151f134f68e555dd0b17c658e13429f270d8a847399b99235a3f \ - --hash=sha256:d50718dd574a49d3ef3f7ef7ece66ef281b527951eb2267ce570425459f6a404 \ - --hash=sha256:e5edf189431b4d51f5c6fb4a95084a75cef6b4646c934eb6e32304fc720e1453 \ - --hash=sha256:e6edc3a568667daf7d349d7e820783426ee4f1c0feab86c29bd1d6fe2755e009 \ - --hash=sha256:ed1b2130f5456a09a134cc505a17fc2830a1a48ed53efd37dcc904a23d7b82fa \ - --hash=sha256:fd33f53809bb363cf126bebe7a99d97735988d9b0131a2be59fbf83e1259a5b7 +cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ + --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ + --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ + --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ + --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ + --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ + --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ + --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ + --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ + --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ + --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ + --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ + --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ + --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ + --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ + --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ + --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ + --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ + --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ + --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ + --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ + --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ + --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ + --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ + --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ + --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ + --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ + --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ + --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ + --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ + --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ + --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 -cwe==1.6 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:bad040864f52ccd494763d317eb77e7c604ce323b3a17164d43a97fea4ebb9e8 \ - --hash=sha256:eed7fdbe3565f975bb9ec6cef6f42cb4eb721ec6155fa954f3b1b106351d981e deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -360,9 +349,9 @@ django-rest-knox @ git+https://github.com/jazzband/django-rest-knox@dd7b062147bc django-tagulous==1.3.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478 \ --hash=sha256:d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe -django-two-factor-auth==1.15.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:42fc95a250380a123faec301d350eab588c165af83d5c38840c1cc13f3aac746 \ - --hash=sha256:87510ccdbf6053ba80aa217367fa122ff4cecd04c0afb8becbb2c96655057616 +django-two-factor-auth==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:662782a4ab9f59a06afe3be04540dc8dd04e63b06f52520386a546fcad8d2d41 \ + --hash=sha256:bf57713232b15dc85abbed45244f372bd01de5c145159d3bee3e468af7e2b6d1 django-weasyprint==2.2.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:605eba0dd3246c0410a60fdaa581139330ad6c637fc273e1bfe90a7a09f53728 \ --hash=sha256:7f554bcc428293aeadc175ab5607b4f3bf30c0e5da3d4aa34453b3d96e0ffd3a @@ -378,113 +367,110 @@ dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d -exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ - --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ - --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fonttools[woff]==4.47.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0255dbc128fee75fb9be364806b940ed450dd6838672a150d501ee86523ac61e \ - --hash=sha256:0a00bd0e68e88987dcc047ea31c26d40a3c61185153b03457956a87e39d43c37 \ - --hash=sha256:0a1d313a415eaaba2b35d6cd33536560deeebd2ed758b9bfb89ab5d97dc5deac \ - --hash=sha256:0f750037e02beb8b3569fbff701a572e62a685d2a0e840d75816592280e5feae \ - --hash=sha256:13819db8445a0cec8c3ff5f243af6418ab19175072a9a92f6cc8ca7d1452754b \ - --hash=sha256:254d9a6f7be00212bf0c3159e0a420eb19c63793b2c05e049eb337f3023c5ecc \ - --hash=sha256:29495d6d109cdbabe73cfb6f419ce67080c3ef9ea1e08d5750240fd4b0c4763b \ - --hash=sha256:32ab2e9702dff0dd4510c7bb958f265a8d3dd5c0e2547e7b5f7a3df4979abb07 \ - --hash=sha256:3480eeb52770ff75140fe7d9a2ec33fb67b07efea0ab5129c7e0c6a639c40c70 \ - --hash=sha256:3a808f3c1d1df1f5bf39be869b6e0c263570cdafb5bdb2df66087733f566ea71 \ - --hash=sha256:3b629108351d25512d4ea1a8393a2dba325b7b7d7308116b605ea3f8e1be88df \ - --hash=sha256:3d71606c9321f6701642bd4746f99b6089e53d7e9817fc6b964e90d9c5f0ecc6 \ - --hash=sha256:3e2b95dce2ead58fb12524d0ca7d63a63459dd489e7e5838c3cd53557f8933e1 \ - --hash=sha256:4a5a5318ba5365d992666ac4fe35365f93004109d18858a3e18ae46f67907670 \ - --hash=sha256:4c811d3c73b6abac275babb8aa439206288f56fdb2c6f8835e3d7b70de8937a7 \ - --hash=sha256:4e743935139aa485fe3253fc33fe467eab6ea42583fa681223ea3f1a93dd01e6 \ - --hash=sha256:4ec558c543609e71b2275c4894e93493f65d2f41c15fe1d089080c1d0bb4d635 \ - --hash=sha256:5465df494f20a7d01712b072ae3ee9ad2887004701b95cb2cc6dcb9c2c97a899 \ - --hash=sha256:5b60e3afa9635e3dfd3ace2757039593e3bd3cf128be0ddb7a1ff4ac45fa5a50 \ - --hash=sha256:63fbed184979f09a65aa9c88b395ca539c94287ba3a364517698462e13e457c9 \ - --hash=sha256:69731e8bea0578b3c28fdb43dbf95b9386e2d49a399e9a4ad736b8e479b08085 \ - --hash=sha256:6dd58cc03016b281bd2c74c84cdaa6bd3ce54c5a7f47478b7657b930ac3ed8eb \ - --hash=sha256:740947906590a878a4bde7dd748e85fefa4d470a268b964748403b3ab2aeed6c \ - --hash=sha256:7df26dd3650e98ca45f1e29883c96a0b9f5bb6af8d632a6a108bc744fa0bd9b3 \ - --hash=sha256:7eb7ad665258fba68fd22228a09f347469d95a97fb88198e133595947a20a184 \ - --hash=sha256:7ee48bd9d6b7e8f66866c9090807e3a4a56cf43ffad48962725a190e0dd774c8 \ - --hash=sha256:86e0427864c6c91cf77f16d1fb9bf1bbf7453e824589e8fb8461b6ee1144f506 \ - --hash=sha256:8f57ecd742545362a0f7186774b2d1c53423ed9ece67689c93a1055b236f638c \ - --hash=sha256:90f898cdd67f52f18049250a6474185ef6544c91f27a7bee70d87d77a8daf89c \ - --hash=sha256:94208ea750e3f96e267f394d5588579bb64cc628e321dbb1d4243ffbc291b18b \ - --hash=sha256:a1c154bb85dc9a4cf145250c88d112d88eb414bad81d4cb524d06258dea1bdc0 \ - --hash=sha256:a5d77479fb885ef38a16a253a2f4096bc3d14e63a56d6246bfdb56365a12b20c \ - --hash=sha256:a86a5ab2873ed2575d0fcdf1828143cfc6b977ac448e3dc616bb1e3d20efbafa \ - --hash=sha256:ac71e2e201df041a2891067dc36256755b1229ae167edbdc419b16da78732c2f \ - --hash=sha256:b3e1304e5f19ca861d86a72218ecce68f391646d85c851742d265787f55457a4 \ - --hash=sha256:b8be28c036b9f186e8c7eaf8a11b42373e7e4949f9e9f370202b9da4c4c3f56c \ - --hash=sha256:c19044256c44fe299d9a73456aabee4b4d06c6b930287be93b533b4737d70aa1 \ - --hash=sha256:d49ce3ea7b7173faebc5664872243b40cf88814ca3eb135c4a3cdff66af71946 \ - --hash=sha256:e040f905d542362e07e72e03612a6270c33d38281fd573160e1003e43718d68d \ - --hash=sha256:eabae77a07c41ae0b35184894202305c3ad211a93b2eb53837c2a1143c8bc952 \ - --hash=sha256:f791446ff297fd5f1e2247c188de53c1bfb9dd7f0549eba55b73a3c2087a2703 \ - --hash=sha256:f83a4daef6d2a202acb9bf572958f91cfde5b10c8ee7fb1d09a4c81e5d851fd8 +fonttools[woff]==4.48.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252 \ + --hash=sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea \ + --hash=sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4 \ + --hash=sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e \ + --hash=sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac \ + --hash=sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61 \ + --hash=sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e \ + --hash=sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d \ + --hash=sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348 \ + --hash=sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee \ + --hash=sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199 \ + --hash=sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01 \ + --hash=sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2 \ + --hash=sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81 \ + --hash=sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814 \ + --hash=sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070 \ + --hash=sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68 \ + --hash=sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5 \ + --hash=sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7 \ + --hash=sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f \ + --hash=sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a \ + --hash=sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1 \ + --hash=sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e \ + --hash=sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a \ + --hash=sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092 \ + --hash=sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31 \ + --hash=sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7 \ + --hash=sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48 \ + --hash=sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2 \ + --hash=sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec \ + --hash=sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a \ + --hash=sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f \ + --hash=sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5 \ + --hash=sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0 \ + --hash=sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d \ + --hash=sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a \ + --hash=sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738 \ + --hash=sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95 \ + --hash=sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e \ + --hash=sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124 \ + --hash=sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784 \ + --hash=sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703 googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -granian==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:017fd10e0691613fc290dfc975bbcc9f5ff4f58c6ada556fafec752803aea852 \ - --hash=sha256:096640e9fb0ea85d1d68d963e965340e604625d7dad188bf46f179ad46ce3a4d \ - --hash=sha256:09c243c89e4c14d5d44c141a5c5781bcb8f288bf39f03ad33411b5df60b7aecf \ - --hash=sha256:103a5be73591a9d1f7d17bafeccee6abcf0dc625d79ac59c81ad4be747af35c3 \ - --hash=sha256:10fcfb72d95a2fccea3d7cd2607345c90f19d90641b1c7c797b7e09a63728056 \ - --hash=sha256:13299d9daccc8837250160d77e19e0a80724e135f0e74f04c1e42e33c06b52ce \ - --hash=sha256:1d3c5417351589a9a64e4f904ef1158d4cf296a16708619be8ef36ab936a3032 \ - --hash=sha256:23c3eca51f361066d3a15187ed4b449d4a794cd3ba581c0df5a4a65b63297cde \ - --hash=sha256:298203b468131053788e6280b4088bd9c54ce33284b4bd0b06a8ce864066bf81 \ - --hash=sha256:2cd33014292d0d05b4610bd5696c74a533205ac9aae2e72d1a150bda2fc55149 \ - --hash=sha256:30973afea1091f66ff4526265bd9fff34d4a9a6e91667610c010428edf89a1aa \ - --hash=sha256:36a6bbc4cb9eac6f5276d38a7c99ecbe097c071799786637f6772d16624ee020 \ - --hash=sha256:39e47d5f4c7374911e9fb719560b87ccb88909f3201f6764439ef1c2b652cef3 \ - --hash=sha256:3e7bb6dd592d8266690065b5d539cfda1e6c0c5b0d8dfe8beb1d0d2192f29cd7 \ - --hash=sha256:46d42c5eb165f2e95543daabc5ef4351422451eb7f05e266edf21df5b5352815 \ - --hash=sha256:4f210a02ae2f0f2ddd16cdcde2712de4e9cf726c975fb53cc52bc482483f3720 \ - --hash=sha256:4fc2b506b8d4a9bb59a8eb013314b86743ab376fa0ce85216263c6c88b6b5cc2 \ - --hash=sha256:560f70788b0743e583be6eb8a195d216610878ea1d9dfc8d0f374a33b11b0d1a \ - --hash=sha256:595ccbce87ad77054fffdf8fb5d98880d3c83e9df59a6adf6b6fc808b292aba9 \ - --hash=sha256:5a916bd747f40bd1a178586b549ae13f69f3d25f8e3126a6edc741edb21c65cf \ - --hash=sha256:5ac264112e3abb7eaeef893f7ebf6c5d6a442fa5aa1707be72e28c6f1b49636b \ - --hash=sha256:65d3d718938063edd8bca5a879712422eb908101a1267a9e0a64ef5b6d247810 \ - --hash=sha256:681064e1f6e95fc277d5c047f8070e5448671cdda55de6954d6ff384c43079b7 \ - --hash=sha256:6849232f9afbaf9a3b138d59a6f6d417e23ffe7b285b1fa6f5330c06650f1f82 \ - --hash=sha256:68f3d7f88ccd9af4d4f0402df2c10461e759390f841664be33da92dbd8fe9c43 \ - --hash=sha256:77864832b755f1b23da4ebd106ea57e5e08052471269b693214b7de97bf8dd12 \ - --hash=sha256:77ce675707ce33f53f1013dc0f9234dd2337f728952b453c7d1fe3fb808d3926 \ - --hash=sha256:7bd116a7ec5969669ca6c0618a52741f3e7f7ae59fbaaa29efa2b4c4559fafe5 \ - --hash=sha256:7f0ae8df74187395e4f36be34c3206ffa81adcced0e7796ce80060b4303a06cb \ - --hash=sha256:851e4f5ef540ca71faf3268321a941de01d864817ec611a2790cf77bae450897 \ - --hash=sha256:8587d7afa61b52c161f665d96078e66c2ace98ef4fe5be88c8e0f06d26a4977f \ - --hash=sha256:8d07adddb44ea95854a006cb4f16f137a52bd64e4b9f4042ca7850195289caa5 \ - --hash=sha256:8f934bcd94702942de211dcf2bf39c67e3091121f729a45c92b84b53a84ed7bb \ - --hash=sha256:9082429f3f67e9198d31b1be4e076a93b75a2083679c91a8dd520a059c484b1f \ - --hash=sha256:983505a5f017af5f88161475d247d16a56bf3d023ebb3b60613a01c59433bfa1 \ - --hash=sha256:a4472adb79053d105fccedd8b4491a61b438a9de5c9de5b10ef60390eb431711 \ - --hash=sha256:a60b8e8a3ad28a22b0c862437d42209ac8943bf8313992bf48a404c3e4324803 \ - --hash=sha256:b28f7dec86192e4b78bbaad4786175f7408e800cd2a77311b7d669d3797a1208 \ - --hash=sha256:bc46c683e1f0d65927b5ddb6d2839202f977b37a60564734af694dae82c9b1df \ - --hash=sha256:bddf6da2f5d809e2f82433f95f4ea3afb967ffa7b3a3c3215f9d3ba0d86c96bc \ - --hash=sha256:cc9a0ca178b9575534f037938576a595c0c1b84ccda0da439bf2e597625f7386 \ - --hash=sha256:cee27c0f7494095bb0f9fbf651479a34ae1965eeaf69c704623b297a0c3298ed \ - --hash=sha256:cf109b039639bd64e2496ea37fcc8e68b1958016e37e495446ccf835c020bcd9 \ - --hash=sha256:cf2022f86d33103d15c8efae80fd23fe0a0aa19320c63e83254b0b623c256c8c \ - --hash=sha256:d30a4b37ec2160b6d636c42478cba9bfc9e39c13778b3aeb275c12644c37718f \ - --hash=sha256:d390b7612405c3b9080dc57aa72d2cc9342091a783c0cd9d474ef34eac0d13c8 \ - --hash=sha256:d5f8799fa1d2c9c8e25121c5f5c524c7fba4aad972c68ff179307fcdf483390d \ - --hash=sha256:dc934d496b6d43d673b5686b8355ad8fffa4f368cc4509f40aa5439c1d4d6879 \ - --hash=sha256:e81a5298e12603bd23c1272b5ab984f465104f397a3e22665ae3aee4387e47fe \ - --hash=sha256:e81ec307f0660b57da7f5d1861121b9e8027cd28f610b166c2dba155e0f5f664 \ - --hash=sha256:e87b94d17388c31e1be68ee1d6b1542a6b537ba5feaf203812d783f72742674a \ - --hash=sha256:eccd02c604dd25d789e16f69e1f3be3ed95068f9ae5f59990ab2f9453a74e167 \ - --hash=sha256:edbf2d42bfdbce6dc14772f37085a17d09cacafdc6b7c7747ac848a1537364e4 \ - --hash=sha256:ef7e53c2d13f7be3b0983e377a583b37f7a93af204dd66c01771b7367a7dfcda \ - --hash=sha256:f94d0d1169f5531de028d15093f57feb1214c6b4334aa89908548f858eb719c8 \ - --hash=sha256:f9cf2494bc78b4550ed99a4a58a3fd3b500cf1f8ad3ba150979e4d3d2c3cd3ab \ - --hash=sha256:fdb56864d8233020032775fba591694cad960139436f39ac649e5418912dd582 +granian==1.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00738b68b68cb711b44f38605f42dbe7883bda126e5469ee0c8484fc94f7fdf7 \ + --hash=sha256:0a0ee77479657c39d344744ac71f8e145287433fcf82884b7a253c8fa2cc4f17 \ + --hash=sha256:0a805ffe93271e68d87fdc680440c8b5322a25f76e9ddd1bf6fe5de1fccf3abb \ + --hash=sha256:0b4d702d3ccbe7149640990966f69b7dbb94b50fbe335b5e68ccd674cc7dbc3a \ + --hash=sha256:1210114981e8efdbd05e0afd7ac18a26528af95c1844bfc8b7c7d9f61503a799 \ + --hash=sha256:14c9e6ae6771e77ac5442739770f31740ffe638418b8e12e355ae61b02594681 \ + --hash=sha256:16c8e2ba6c1daecde67a503590cf4e4c26cf7edcfb2d0aec6732e85d486f205a \ + --hash=sha256:1c05a03d09b8bee9d8b6bd46823f4bc1091947d35b858b5081bebb5d5753561f \ + --hash=sha256:1e946cfaca0a20ef261d9783193b28f496b64aaaeb32cde6b79b894c04078931 \ + --hash=sha256:21ffbb8ca922fce363f40be482e9696fc5c2750b5ba030414877aa598d40aca2 \ + --hash=sha256:25e818153faf360391b25ae897d4265fac58355b2db66289621b337c133e3eb0 \ + --hash=sha256:326b2a31e187e78946469644d075eb35f5cb6f6bcf1d6292566226e03573097d \ + --hash=sha256:35e2105333576ad2fc06981f81b3d843f247facc8ae6280fca9851ce3a278cd6 \ + --hash=sha256:3af0fd0e8e63763765c7c886b2d5b33480caa648382e7457fa8ffafecfe936b3 \ + --hash=sha256:3f6ab9edda019e9fa9b82086a8cb3458e3a52a22f449ae4e3d1e37dc62822cec \ + --hash=sha256:408a891f477e3246a8a43c59a5f413c7af3a9552f04c09d792c1a0a1f2646759 \ + --hash=sha256:43c4e687f881eef0cea6830a16feb775fffd095613e877259383b738272cac6d \ + --hash=sha256:51207108f4281b838bb8e8360fe5f5d259a3e8b842a7a784c1050f8dfff95881 \ + --hash=sha256:526bf2c03fe5280a0cd313d82db8c7f6116499e84ea0f50bbf5d07357962b4e0 \ + --hash=sha256:53659ff6e0bb425c03c529b495f1cccaf354b18c8f0ff8d68bbe22985489c5b9 \ + --hash=sha256:53bd4cbf04d3b9e1de6cb1af3d8e879624780ad80b4ae790f0fa01bb5b3bc9a3 \ + --hash=sha256:5b259dbf9719218a2e7b651b1aafa87bca4aa1e87d1e37f9eb936f540ac6be66 \ + --hash=sha256:5ea88063085bf6cee8ea6c6fe572c8d886d0f014bf42ae74177c32d523e721d4 \ + --hash=sha256:605c02e4dbcee2612bb0be983d586ecbeadce882c3878d23dfbe9b92af934449 \ + --hash=sha256:6090aad96a1bc34073ca15a1c54e60e7064291a5073d9b4106fc7bd2defc8a50 \ + --hash=sha256:615bc3dbea358af08cd4cdb154f0fb52ddef74e4f29148f99708be11b5a68273 \ + --hash=sha256:62d74597d427ba20b571a1cb1ab75014ac26ec9fbebcbc3dc8037fbe1f585e2d \ + --hash=sha256:6312a2b30b9dd024210b526c55b7eb7f1978c602a83f37503207ab708298f80a \ + --hash=sha256:638a03a93a6ed30bda0f3afefe70bfe5f1055e5a30f05ceda4a0873ba63bb431 \ + --hash=sha256:65906afa7c77ba96d467459d74b01f1308ead6bfe599eec962f7dcc2ddcc1e21 \ + --hash=sha256:7b18e1d2398ab9c556eb6b2f8eb8863d8b181e249e264da5dc6ae10a51004690 \ + --hash=sha256:7efe7a230ea4935bbf8a583aa11a1e7525e6e8731c01dc3859d068d7666a66eb \ + --hash=sha256:7fedb0ca2803aace5eba2c6e9c74b32e2e15ea8a4af56cd6a58fcf4c13135b68 \ + --hash=sha256:85e9a305643133ec655f13cb8f462ea12b4cabd88210366a1367a3dae7bbdb3d \ + --hash=sha256:860afd06bc2ef5d0549d7037dc5763922c83766e23089d14276f54d3ef3791cb \ + --hash=sha256:8a4e107c54597501b4cd65af7f3cc1bab9eaf4f65ea6efcff48570bcaac9d59a \ + --hash=sha256:9245c1e4327e8dbf7a371794fb9bcbc7ee55f8b060b687f44109105190f8e95f \ + --hash=sha256:944b3cdbbd4290cbe788acb455fc72eaa1eb407b79d99b4a029e2a9493b805f9 \ + --hash=sha256:970366d1a12e720d12344a7f17dce7293c82e192b648bd2ac5faefe3b5ddc8d8 \ + --hash=sha256:990a6f55668e754b8c09fb5498fde658cd19f261120d760f2a68ec1b2ba8233b \ + --hash=sha256:a3a2d49a24f69a390a3cd89d3659e60a07a999408bd3316f49832fe4692432f2 \ + --hash=sha256:a774504e4edba71993a07bccec8f19f724379f774df579893ba844c637cd74f8 \ + --hash=sha256:a8a413c5bd67307a630d02080c3763fc06d3f4d82ad4377f03c984550915362f \ + --hash=sha256:ada8aa662babcb1acb05168b3afa8e8e97ba16a69985538ebba63fe2c9afdcfa \ + --hash=sha256:add4914ba191e011b473c223606d3a97cb6cd541ef0293246f92ea0120b5f958 \ + --hash=sha256:b2eec63ce6dfad273f7cc2c41825da490d79d4462500560fb5afd7fed0ab063f \ + --hash=sha256:b4e53619d0b3830d69ce3bd62e00eaeac6838d54402de6dfb4e2c0996c2b67e0 \ + --hash=sha256:ba7fbc76e9845dee40c7f8b28925db5b3324ff9bc17b76111b699a1642e21ce7 \ + --hash=sha256:bc3bd8b3c78faa522f6b534ab3db38fa5e31203751699aa5658f843573d7e155 \ + --hash=sha256:c18f3674792ef5018493abfcef4bc61fa089dcabb2c15aec6a73f4e41ea51be5 \ + --hash=sha256:c546eb03cdf04d217f043fe2ea60cf44084039dcc6d9a5c493a6dbf209a47942 \ + --hash=sha256:c5872237c584d52bb72a966af6952b06a624626d78d3e1b3c02488432f9db43c \ + --hash=sha256:d21e97cb0d9226223aa04bd681a03841e1cfc087844b3e82787e54da57ef513b \ + --hash=sha256:e01fc98c74a36e7027822fd183e2cc105f0833bb26997aa7a1164def44a24a4f \ + --hash=sha256:e25ee4f54b706cb18654c884c7d4b86c624076c16aada1164bf70b13573d4f04 \ + --hash=sha256:e571a953474558dc878871476170eaed55d59c273925ec9260286faa11384884 \ + --hash=sha256:e8919ce19ee801123a9af3c832c505771df50840157ac54b3b89e20470f2fadf grpcio==1.56.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008767c0aed4899e657b50f2e0beacbabccab51359eba547f860e7c55f2be6ba \ --hash=sha256:03a80451530fd3b8b155e0c4480434f6be669daf7ecba56f73ef98f94222ee01 \ @@ -688,9 +674,9 @@ opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < oscrypto==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 -phonenumbers==8.13.29 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9d7863dc8a37e8127f3c9dde65be93a5b46649b779184f8b0a85bdd043b0b293 \ - --hash=sha256:a6c85b53e28410aba2f312255cc8015f384a43e7e241ffb84ca5cde80f094cdf +phonenumbers==8.13.30 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:175fcaa89780c9cb6e089fe61de960396c9fc0c01845aea26400975fb10a8ea8 \ + --hash=sha256:273a969a863e9e38d4944b26fc277f408dc9aa84faa04996266efa4021adea00 pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8 \ --hash=sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39 \ @@ -791,92 +777,92 @@ psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ pycparser==2.21 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a @@ -904,9 +890,9 @@ python-bidi==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a -pytz==2023.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:31d4583c4ed539cd037956140d695e42c033a19e984bfce9964a3f7d59bc2b40 \ - --hash=sha256:f90ef520d95e7c46951105338d918664ebfd6f1d995bd7d153127ce90efafa6a +pytz==2024.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ + --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ @@ -1061,115 +1047,112 @@ rjsmin==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eb770aaf637919b0011c4eb87b9ac6317079fb9800eb17c90dda05fc9de4ebc3 \ --hash=sha256:f0895b360dccf7e2d6af8762a52985e3fbaa56778de1bf6b20dbc96134253807 \ --hash=sha256:f7cd33602ec0f393a0058e883284496bb4dbbdd34e0bbe23b594c8933ddf9b65 -rpds-py==0.17.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:01f58a7306b64e0a4fe042047dd2b7d411ee82e54240284bab63e325762c1147 \ - --hash=sha256:0210b2668f24c078307260bf88bdac9d6f1093635df5123789bfee4d8d7fc8e7 \ - --hash=sha256:02866e060219514940342a1f84303a1ef7a1dad0ac311792fbbe19b521b489d2 \ - --hash=sha256:0387ce69ba06e43df54e43968090f3626e231e4bc9150e4c3246947567695f68 \ - --hash=sha256:060f412230d5f19fc8c8b75f315931b408d8ebf56aec33ef4168d1b9e54200b1 \ - --hash=sha256:071bc28c589b86bc6351a339114fb7a029f5cddbaca34103aa573eba7b482382 \ - --hash=sha256:0bfb09bf41fe7c51413f563373e5f537eaa653d7adc4830399d4e9bdc199959d \ - --hash=sha256:10162fe3f5f47c37ebf6d8ff5a2368508fe22007e3077bf25b9c7d803454d921 \ - --hash=sha256:149c5cd24f729e3567b56e1795f74577aa3126c14c11e457bec1b1c90d212e38 \ - --hash=sha256:1701fc54460ae2e5efc1dd6350eafd7a760f516df8dbe51d4a1c79d69472fbd4 \ - --hash=sha256:1957a2ab607f9added64478a6982742eb29f109d89d065fa44e01691a20fc20a \ - --hash=sha256:1a746a6d49665058a5896000e8d9d2f1a6acba8a03b389c1e4c06e11e0b7f40d \ - --hash=sha256:1bfcad3109c1e5ba3cbe2f421614e70439f72897515a96c462ea657261b96518 \ - --hash=sha256:1d36b2b59e8cc6e576f8f7b671e32f2ff43153f0ad6d0201250a7c07f25d570e \ - --hash=sha256:1db228102ab9d1ff4c64148c96320d0be7044fa28bd865a9ce628ce98da5973d \ - --hash=sha256:1dc29db3900cb1bb40353772417800f29c3d078dbc8024fd64655a04ee3c4bdf \ - --hash=sha256:1e626b365293a2142a62b9a614e1f8e331b28f3ca57b9f05ebbf4cf2a0f0bdc5 \ - --hash=sha256:1f3c3461ebb4c4f1bbc70b15d20b565759f97a5aaf13af811fcefc892e9197ba \ - --hash=sha256:20de7b7179e2031a04042e85dc463a93a82bc177eeba5ddd13ff746325558aa6 \ - --hash=sha256:24e4900a6643f87058a27320f81336d527ccfe503984528edde4bb660c8c8d59 \ - --hash=sha256:2528ff96d09f12e638695f3a2e0c609c7b84c6df7c5ae9bfeb9252b6fa686253 \ - --hash=sha256:25f071737dae674ca8937a73d0f43f5a52e92c2d178330b4c0bb6ab05586ffa6 \ - --hash=sha256:270987bc22e7e5a962b1094953ae901395e8c1e1e83ad016c5cfcfff75a15a3f \ - --hash=sha256:292f7344a3301802e7c25c53792fae7d1593cb0e50964e7bcdcc5cf533d634e3 \ - --hash=sha256:2953937f83820376b5979318840f3ee47477d94c17b940fe31d9458d79ae7eea \ - --hash=sha256:2a792b2e1d3038daa83fa474d559acfd6dc1e3650ee93b2662ddc17dbff20ad1 \ - --hash=sha256:2a7b2f2f56a16a6d62e55354dd329d929560442bd92e87397b7a9586a32e3e76 \ - --hash=sha256:2f4eb548daf4836e3b2c662033bfbfc551db58d30fd8fe660314f86bf8510b93 \ - --hash=sha256:3664d126d3388a887db44c2e293f87d500c4184ec43d5d14d2d2babdb4c64cad \ - --hash=sha256:3677fcca7fb728c86a78660c7fb1b07b69b281964673f486ae72860e13f512ad \ - --hash=sha256:380e0df2e9d5d5d339803cfc6d183a5442ad7ab3c63c2a0982e8c824566c5ccc \ - --hash=sha256:3ac732390d529d8469b831949c78085b034bff67f584559340008d0f6041a049 \ - --hash=sha256:4128980a14ed805e1b91a7ed551250282a8ddf8201a4e9f8f5b7e6225f54170d \ - --hash=sha256:4341bd7579611cf50e7b20bb8c2e23512a3dc79de987a1f411cb458ab670eb90 \ - --hash=sha256:436474f17733c7dca0fbf096d36ae65277e8645039df12a0fa52445ca494729d \ - --hash=sha256:4dc889a9d8a34758d0fcc9ac86adb97bab3fb7f0c4d29794357eb147536483fd \ - --hash=sha256:4e21b76075c01d65d0f0f34302b5a7457d95721d5e0667aea65e5bb3ab415c25 \ - --hash=sha256:516fb8c77805159e97a689e2f1c80655c7658f5af601c34ffdb916605598cda2 \ - --hash=sha256:5576ee2f3a309d2bb403ec292d5958ce03953b0e57a11d224c1f134feaf8c40f \ - --hash=sha256:5a024fa96d541fd7edaa0e9d904601c6445e95a729a2900c5aec6555fe921ed6 \ - --hash=sha256:5d0e8a6434a3fbf77d11448c9c25b2f25244226cfbec1a5159947cac5b8c5fa4 \ - --hash=sha256:5e7d63ec01fe7c76c2dbb7e972fece45acbb8836e72682bde138e7e039906e2c \ - --hash=sha256:60e820ee1004327609b28db8307acc27f5f2e9a0b185b2064c5f23e815f248f8 \ - --hash=sha256:637b802f3f069a64436d432117a7e58fab414b4e27a7e81049817ae94de45d8d \ - --hash=sha256:65dcf105c1943cba45d19207ef51b8bc46d232a381e94dd38719d52d3980015b \ - --hash=sha256:698ea95a60c8b16b58be9d854c9f993c639f5c214cf9ba782eca53a8789d6b19 \ - --hash=sha256:70fcc6c2906cfa5c6a552ba7ae2ce64b6c32f437d8f3f8eea49925b278a61453 \ - --hash=sha256:720215373a280f78a1814becb1312d4e4d1077b1202a56d2b0815e95ccb99ce9 \ - --hash=sha256:7450dbd659fed6dd41d1a7d47ed767e893ba402af8ae664c157c255ec6067fde \ - --hash=sha256:7b7d9ca34542099b4e185b3c2a2b2eda2e318a7dbde0b0d83357a6d4421b5296 \ - --hash=sha256:7fbd70cb8b54fe745301921b0816c08b6d917593429dfc437fd024b5ba713c58 \ - --hash=sha256:81038ff87a4e04c22e1d81f947c6ac46f122e0c80460b9006e6517c4d842a6ec \ - --hash=sha256:810685321f4a304b2b55577c915bece4c4a06dfe38f6e62d9cc1d6ca8ee86b99 \ - --hash=sha256:82ada4a8ed9e82e443fcef87e22a3eed3654dd3adf6e3b3a0deb70f03e86142a \ - --hash=sha256:841320e1841bb53fada91c9725e766bb25009cfd4144e92298db296fb6c894fb \ - --hash=sha256:8587fd64c2a91c33cdc39d0cebdaf30e79491cc029a37fcd458ba863f8815383 \ - --hash=sha256:8ffe53e1d8ef2520ebcf0c9fec15bb721da59e8ef283b6ff3079613b1e30513d \ - --hash=sha256:9051e3d2af8f55b42061603e29e744724cb5f65b128a491446cc029b3e2ea896 \ - --hash=sha256:91e5a8200e65aaac342a791272c564dffcf1281abd635d304d6c4e6b495f29dc \ - --hash=sha256:93432e747fb07fa567ad9cc7aaadd6e29710e515aabf939dfbed8046041346c6 \ - --hash=sha256:938eab7323a736533f015e6069a7d53ef2dcc841e4e533b782c2bfb9fb12d84b \ - --hash=sha256:9584f8f52010295a4a417221861df9bea4c72d9632562b6e59b3c7b87a1522b7 \ - --hash=sha256:9737bdaa0ad33d34c0efc718741abaafce62fadae72c8b251df9b0c823c63b22 \ - --hash=sha256:99da0a4686ada4ed0f778120a0ea8d066de1a0a92ab0d13ae68492a437db78bf \ - --hash=sha256:99f567dae93e10be2daaa896e07513dd4bf9c2ecf0576e0533ac36ba3b1d5394 \ - --hash=sha256:9bdf1303df671179eaf2cb41e8515a07fc78d9d00f111eadbe3e14262f59c3d0 \ - --hash=sha256:9f0e4dc0f17dcea4ab9d13ac5c666b6b5337042b4d8f27e01b70fae41dd65c57 \ - --hash=sha256:a000133a90eea274a6f28adc3084643263b1e7c1a5a66eb0a0a7a36aa757ed74 \ - --hash=sha256:a3264e3e858de4fc601741498215835ff324ff2482fd4e4af61b46512dd7fc83 \ - --hash=sha256:a71169d505af63bb4d20d23a8fbd4c6ce272e7bce6cc31f617152aa784436f29 \ - --hash=sha256:a967dd6afda7715d911c25a6ba1517975acd8d1092b2f326718725461a3d33f9 \ - --hash=sha256:aa5bfb13f1e89151ade0eb812f7b0d7a4d643406caaad65ce1cbabe0a66d695f \ - --hash=sha256:ae35e8e6801c5ab071b992cb2da958eee76340e6926ec693b5ff7d6381441745 \ - --hash=sha256:b686f25377f9c006acbac63f61614416a6317133ab7fafe5de5f7dc8a06d42eb \ - --hash=sha256:b760a56e080a826c2e5af09002c1a037382ed21d03134eb6294812dda268c811 \ - --hash=sha256:b86b21b348f7e5485fae740d845c65a880f5d1eda1e063bc59bef92d1f7d0c55 \ - --hash=sha256:b9412abdf0ba70faa6e2ee6c0cc62a8defb772e78860cef419865917d86c7342 \ - --hash=sha256:bd345a13ce06e94c753dab52f8e71e5252aec1e4f8022d24d56decd31e1b9b23 \ - --hash=sha256:be22ae34d68544df293152b7e50895ba70d2a833ad9566932d750d3625918b82 \ - --hash=sha256:bf046179d011e6114daf12a534d874958b039342b347348a78b7cdf0dd9d6041 \ - --hash=sha256:c3d2010656999b63e628a3c694f23020322b4178c450dc478558a2b6ef3cb9bb \ - --hash=sha256:c64602e8be701c6cfe42064b71c84ce62ce66ddc6422c15463fd8127db3d8066 \ - --hash=sha256:d65e6b4f1443048eb7e833c2accb4fa7ee67cc7d54f31b4f0555b474758bee55 \ - --hash=sha256:d8bbd8e56f3ba25a7d0cf980fc42b34028848a53a0e36c9918550e0280b9d0b6 \ - --hash=sha256:da1ead63368c04a9bded7904757dfcae01eba0e0f9bc41d3d7f57ebf1c04015a \ - --hash=sha256:dbbb95e6fc91ea3102505d111b327004d1c4ce98d56a4a02e82cd451f9f57140 \ - --hash=sha256:dbc56680ecf585a384fbd93cd42bc82668b77cb525343170a2d86dafaed2a84b \ - --hash=sha256:df3b6f45ba4515632c5064e35ca7f31d51d13d1479673185ba8f9fefbbed58b9 \ - --hash=sha256:dfe07308b311a8293a0d5ef4e61411c5c20f682db6b5e73de6c7c8824272c256 \ - --hash=sha256:e796051f2070f47230c745d0a77a91088fbee2cc0502e9b796b9c6471983718c \ - --hash=sha256:efa767c220d94aa4ac3a6dd3aeb986e9f229eaf5bce92d8b1b3018d06bed3772 \ - --hash=sha256:f0b8bf5b8db49d8fd40f54772a1dcf262e8be0ad2ab0206b5a2ec109c176c0a4 \ - --hash=sha256:f175e95a197f6a4059b50757a3dca33b32b61691bdbd22c29e8a8d21d3914cae \ - --hash=sha256:f2f3b28b40fddcb6c1f1f6c88c6f3769cd933fa493ceb79da45968a21dccc920 \ - --hash=sha256:f6c43b6f97209e370124baf2bf40bb1e8edc25311a158867eb1c3a5d449ebc7a \ - --hash=sha256:f7f4cb1f173385e8a39c29510dd11a78bf44e360fb75610594973f5ea141028b \ - --hash=sha256:fad059a4bd14c45776600d223ec194e77db6c20255578bb5bcdd7c18fd169361 \ - --hash=sha256:ff1dcb8e8bc2261a088821b2595ef031c91d499a0c1b031c152d43fe0a6ecec8 \ - --hash=sha256:ffee088ea9b593cc6160518ba9bd319b5475e5f3e578e4552d63818773c6f56a -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +rpds-py==0.18.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f \ + --hash=sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c \ + --hash=sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76 \ + --hash=sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e \ + --hash=sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157 \ + --hash=sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f \ + --hash=sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5 \ + --hash=sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05 \ + --hash=sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24 \ + --hash=sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1 \ + --hash=sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8 \ + --hash=sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b \ + --hash=sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb \ + --hash=sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07 \ + --hash=sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1 \ + --hash=sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6 \ + --hash=sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e \ + --hash=sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e \ + --hash=sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1 \ + --hash=sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab \ + --hash=sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4 \ + --hash=sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17 \ + --hash=sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594 \ + --hash=sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d \ + --hash=sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d \ + --hash=sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3 \ + --hash=sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c \ + --hash=sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66 \ + --hash=sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f \ + --hash=sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80 \ + --hash=sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33 \ + --hash=sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f \ + --hash=sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c \ + --hash=sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022 \ + --hash=sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e \ + --hash=sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f \ + --hash=sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da \ + --hash=sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1 \ + --hash=sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688 \ + --hash=sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795 \ + --hash=sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c \ + --hash=sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98 \ + --hash=sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1 \ + --hash=sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20 \ + --hash=sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307 \ + --hash=sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4 \ + --hash=sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18 \ + --hash=sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294 \ + --hash=sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66 \ + --hash=sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467 \ + --hash=sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948 \ + --hash=sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e \ + --hash=sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1 \ + --hash=sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0 \ + --hash=sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7 \ + --hash=sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd \ + --hash=sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641 \ + --hash=sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d \ + --hash=sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9 \ + --hash=sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1 \ + --hash=sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da \ + --hash=sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3 \ + --hash=sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa \ + --hash=sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7 \ + --hash=sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40 \ + --hash=sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496 \ + --hash=sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124 \ + --hash=sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836 \ + --hash=sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434 \ + --hash=sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984 \ + --hash=sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f \ + --hash=sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6 \ + --hash=sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e \ + --hash=sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461 \ + --hash=sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c \ + --hash=sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432 \ + --hash=sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73 \ + --hash=sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58 \ + --hash=sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88 \ + --hash=sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337 \ + --hash=sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7 \ + --hash=sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863 \ + --hash=sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475 \ + --hash=sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3 \ + --hash=sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51 \ + --hash=sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf \ + --hash=sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024 \ + --hash=sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40 \ + --hash=sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9 \ + --hash=sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec \ + --hash=sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb \ + --hash=sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7 \ + --hash=sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861 \ + --hash=sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880 \ + --hash=sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f \ + --hash=sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd \ + --hash=sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca \ + --hash=sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58 \ + --hash=sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 six==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 -sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ - --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 @@ -1184,27 +1167,24 @@ svglib==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 -toolz==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85 \ - --hash=sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2023.4 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ - --hash=sha256:aa3ace4329eeacda5b7beb7ea08ece826c28d761cda36e747cfbf97996d39bf3 \ - --hash=sha256:dd54c94f294765522c77399649b4fefd95522479a664a0cec87f41bebc6148c9 +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ + --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ + --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ + --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ @@ -1242,85 +1222,9 @@ uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == " --hash=sha256:ed3c28337d2fefc0bac5705b9c66b2702dc392f2e9a69badb1d606e7e7f773bb \ --hash=sha256:edbb4de38535f42f020da1e3ae7c60f2f65402d027a08a8c60dc8569464873a6 \ --hash=sha256:f3b18663efe0012bc4c315f1b64020e44596f5fabc281f5b0d9bc9465288559c -watchfiles==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:02b73130687bc3f6bb79d8a170959042eb56eb3a42df3671c79b428cd73f17cc \ - --hash=sha256:02d91cbac553a3ad141db016e3350b03184deaafeba09b9d6439826ee594b365 \ - --hash=sha256:06247538e8253975bdb328e7683f8515ff5ff041f43be6c40bff62d989b7d0b0 \ - --hash=sha256:08dca260e85ffae975448e344834d765983237ad6dc308231aa16e7933db763e \ - --hash=sha256:0d9ac347653ebd95839a7c607608703b20bc07e577e870d824fa4801bc1cb124 \ - --hash=sha256:0dd5fad9b9c0dd89904bbdea978ce89a2b692a7ee8a0ce19b940e538c88a809c \ - --hash=sha256:11cd0c3100e2233e9c53106265da31d574355c288e15259c0d40a4405cbae317 \ - --hash=sha256:18722b50783b5e30a18a8a5db3006bab146d2b705c92eb9a94f78c72beb94094 \ - --hash=sha256:18d5b4da8cf3e41895b34e8c37d13c9ed294954907929aacd95153508d5d89d7 \ - --hash=sha256:1ad7247d79f9f55bb25ab1778fd47f32d70cf36053941f07de0b7c4e96b5d235 \ - --hash=sha256:1b8d1eae0f65441963d805f766c7e9cd092f91e0c600c820c764a4ff71a0764c \ - --hash=sha256:1bd467213195e76f838caf2c28cd65e58302d0254e636e7c0fca81efa4a2e62c \ - --hash=sha256:1c9198c989f47898b2c22201756f73249de3748e0fc9de44adaf54a8b259cc0c \ - --hash=sha256:1fd9a5205139f3c6bb60d11f6072e0552f0a20b712c85f43d42342d162be1235 \ - --hash=sha256:214cee7f9e09150d4fb42e24919a1e74d8c9b8a9306ed1474ecaddcd5479c293 \ - --hash=sha256:27b4035013f1ea49c6c0b42d983133b136637a527e48c132d368eb19bf1ac6aa \ - --hash=sha256:3a23092a992e61c3a6a70f350a56db7197242f3490da9c87b500f389b2d01eef \ - --hash=sha256:3ad692bc7792be8c32918c699638b660c0de078a6cbe464c46e1340dadb94c19 \ - --hash=sha256:3ccceb50c611c433145502735e0370877cced72a6c70fd2410238bcbc7fe51d8 \ - --hash=sha256:3d0f32ebfaa9c6011f8454994f86108c2eb9c79b8b7de00b36d558cadcedaa3d \ - --hash=sha256:3f92944efc564867bbf841c823c8b71bb0be75e06b8ce45c084b46411475a915 \ - --hash=sha256:40bca549fdc929b470dd1dbfcb47b3295cb46a6d2c90e50588b0a1b3bd98f429 \ - --hash=sha256:43babacef21c519bc6631c5fce2a61eccdfc011b4bcb9047255e9620732c8097 \ - --hash=sha256:4566006aa44cb0d21b8ab53baf4b9c667a0ed23efe4aaad8c227bfba0bf15cbe \ - --hash=sha256:49f56e6ecc2503e7dbe233fa328b2be1a7797d31548e7a193237dcdf1ad0eee0 \ - --hash=sha256:4c48a10d17571d1275701e14a601e36959ffada3add8cdbc9e5061a6e3579a5d \ - --hash=sha256:4ea10a29aa5de67de02256a28d1bf53d21322295cb00bd2d57fcd19b850ebd99 \ - --hash=sha256:511f0b034120cd1989932bf1e9081aa9fb00f1f949fbd2d9cab6264916ae89b1 \ - --hash=sha256:51ddac60b96a42c15d24fbdc7a4bfcd02b5a29c047b7f8bf63d3f6f5a860949a \ - --hash=sha256:57d430f5fb63fea141ab71ca9c064e80de3a20b427ca2febcbfcef70ff0ce895 \ - --hash=sha256:59137c0c6826bd56c710d1d2bda81553b5e6b7c84d5a676747d80caf0409ad94 \ - --hash=sha256:5a03651352fc20975ee2a707cd2d74a386cd303cc688f407296064ad1e6d1562 \ - --hash=sha256:5eb86c6acb498208e7663ca22dbe68ca2cf42ab5bf1c776670a50919a56e64ab \ - --hash=sha256:642d66b75eda909fd1112d35c53816d59789a4b38c141a96d62f50a3ef9b3360 \ - --hash=sha256:6674b00b9756b0af620aa2a3346b01f8e2a3dc729d25617e1b89cf6af4a54eb1 \ - --hash=sha256:668c265d90de8ae914f860d3eeb164534ba2e836811f91fecc7050416ee70aa7 \ - --hash=sha256:66fac0c238ab9a2e72d026b5fb91cb902c146202bbd29a9a1a44e8db7b710b6f \ - --hash=sha256:6c107ea3cf2bd07199d66f156e3ea756d1b84dfd43b542b2d870b77868c98c03 \ - --hash=sha256:6c889025f59884423428c261f212e04d438de865beda0b1e1babab85ef4c0f01 \ - --hash=sha256:6cb8fdc044909e2078c248986f2fc76f911f72b51ea4a4fbbf472e01d14faa58 \ - --hash=sha256:6e9be3ef84e2bb9710f3f777accce25556f4a71e15d2b73223788d528fcc2052 \ - --hash=sha256:7f762a1a85a12cc3484f77eee7be87b10f8c50b0b787bb02f4e357403cad0c0e \ - --hash=sha256:83a696da8922314ff2aec02987eefb03784f473281d740bf9170181829133765 \ - --hash=sha256:853853cbf7bf9408b404754b92512ebe3e3a83587503d766d23e6bf83d092ee6 \ - --hash=sha256:8ad3fe0a3567c2f0f629d800409cd528cb6251da12e81a1f765e5c5345fd0137 \ - --hash=sha256:8c6ed10c2497e5fedadf61e465b3ca12a19f96004c15dcffe4bd442ebadc2d85 \ - --hash=sha256:8d5f400326840934e3507701f9f7269247f7c026d1b6cfd49477d2be0933cfca \ - --hash=sha256:927c589500f9f41e370b0125c12ac9e7d3a2fd166b89e9ee2828b3dda20bfe6f \ - --hash=sha256:9a0aa47f94ea9a0b39dd30850b0adf2e1cd32a8b4f9c7aa443d852aacf9ca214 \ - --hash=sha256:9b37a7ba223b2f26122c148bb8d09a9ff312afca998c48c725ff5a0a632145f7 \ - --hash=sha256:9c873345680c1b87f1e09e0eaf8cf6c891b9851d8b4d3645e7efe2ec20a20cc7 \ - --hash=sha256:9d09869f2c5a6f2d9df50ce3064b3391d3ecb6dced708ad64467b9e4f2c9bef3 \ - --hash=sha256:9d353c4cfda586db2a176ce42c88f2fc31ec25e50212650c89fdd0f560ee507b \ - --hash=sha256:a1e3014a625bcf107fbf38eece0e47fa0190e52e45dc6eee5a8265ddc6dc5ea7 \ - --hash=sha256:a3b9bec9579a15fb3ca2d9878deae789df72f2b0fdaf90ad49ee389cad5edab6 \ - --hash=sha256:ab03a90b305d2588e8352168e8c5a1520b721d2d367f31e9332c4235b30b8994 \ - --hash=sha256:aff06b2cac3ef4616e26ba17a9c250c1fe9dd8a5d907d0193f84c499b1b6e6a9 \ - --hash=sha256:b3cab0e06143768499384a8a5efb9c4dc53e19382952859e4802f294214f36ec \ - --hash=sha256:b4a21f71885aa2744719459951819e7bf5a906a6448a6b2bbce8e9cc9f2c8128 \ - --hash=sha256:b6d45d9b699ecbac6c7bd8e0a2609767491540403610962968d258fd6405c17c \ - --hash=sha256:be6dd5d52b73018b21adc1c5d28ac0c68184a64769052dfeb0c5d9998e7f56a2 \ - --hash=sha256:c550a56bf209a3d987d5a975cdf2063b3389a5d16caf29db4bdddeae49f22078 \ - --hash=sha256:c76c635fabf542bb78524905718c39f736a98e5ab25b23ec6d4abede1a85a6a3 \ - --hash=sha256:c81818595eff6e92535ff32825f31c116f867f64ff8cdf6562cd1d6b2e1e8f3e \ - --hash=sha256:cfb92d49dbb95ec7a07511bc9efb0faff8fe24ef3805662b8d6808ba8409a71a \ - --hash=sha256:d23bcd6c8eaa6324fe109d8cac01b41fe9a54b8c498af9ce464c1aeeb99903d6 \ - --hash=sha256:d5b1dc0e708fad9f92c296ab2f948af403bf201db8fb2eb4c8179db143732e49 \ - --hash=sha256:d78f30cbe8b2ce770160d3c08cff01b2ae9306fe66ce899b73f0409dc1846c1b \ - --hash=sha256:d8f57c4461cd24fda22493109c45b3980863c58a25b8bec885ca8bea6b8d4b28 \ - --hash=sha256:d9792dff410f266051025ecfaa927078b94cc7478954b06796a9756ccc7e14a9 \ - --hash=sha256:e7941bbcfdded9c26b0bf720cb7e6fd803d95a55d2c14b4bd1f6a2772230c586 \ - --hash=sha256:ebe684d7d26239e23d102a2bad2a358dedf18e462e8808778703427d1f584400 \ - --hash=sha256:ec8c8900dc5c83650a63dd48c4d1d245343f904c4b64b48798c67a3767d7e165 \ - --hash=sha256:f564bf68404144ea6b87a78a3f910cc8de216c6b12a4cf0b27718bf4ec38d303 \ - --hash=sha256:fd7ac678b92b29ba630d8c842d8ad6c555abda1b9ef044d6cc092dacbfc9719d -weasyprint==60.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0c0cdd617a78699262b80026e67fa1692e3802cfa966395436eeaf6f787dd126 \ - --hash=sha256:3e98eedcc1c5a14cb310c293c6d59a479f59a13f0d705ff07106482827fa5705 +weasyprint==61.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1dd5e929389b7ebcbff3088da7af13ae7ab201dce3a2faca7832b1dd5cec60ea \ + --hash=sha256:d91b11a05426fef1d63de826f30a80521d48c6a356455d338c2c429989fa586d webencodings==0.5.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 From 8517ac2aea6b9f970398e13186857e0a90e2ba20 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 19 Feb 2024 09:10:11 +0100 Subject: [PATCH 49/85] Add pyupgrade and django-upgrade to pre-commit (#2523) Co-authored-by: Jan Klopper --- .pre-commit-config.yaml | 12 ++++++++ .../boefjes/katalogus/tests/test_plugins.py | 16 +++++----- boefjes/boefjes/plugins/kat_dns/main.py | 2 +- boefjes/boefjes/plugins/kat_fierce/fierce.py | 4 +-- .../find_images_in_html/normalize.py | 2 +- .../tests/integration/test_xtdb_client.py | 26 +++++++--------- rocky/fmea/admin.py | 10 +++---- .../aggregate_organisation_report/report.py | 18 +++++------ .../report_types/systems_report/report.py | 30 ++++++++----------- rocky/rocky/middleware/auth_required.py | 2 +- rocky/rocky/settings.py | 1 - rocky/tools/admin.py | 8 ++--- rocky/tools/forms/upload_raw.py | 2 +- 13 files changed, 67 insertions(+), 66 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b6f65905dba..7d41245f78a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -56,6 +56,18 @@ repos: hooks: - id: ruff +- repo: https://github.com/asottile/pyupgrade + rev: v3.15.0 + hooks: + - id: pyupgrade + args: [--py310-plus] + +- repo: https://github.com/adamchainz/django-upgrade + rev: 1.16.0 + hooks: + - id: django-upgrade + args: [--target-version, "4.2"] + - repo: https://github.com/psf/black rev: "23.12.1" hooks: diff --git a/boefjes/boefjes/katalogus/tests/test_plugins.py b/boefjes/boefjes/katalogus/tests/test_plugins.py index 8051bbd0f5b..24e5e5a08bd 100644 --- a/boefjes/boefjes/katalogus/tests/test_plugins.py +++ b/boefjes/boefjes/katalogus/tests/test_plugins.py @@ -32,7 +32,7 @@ def test_list(self): "kat_test_normalize", "kat_test_normalize_2", }, - set([x["id"] for x in res.json()]), + {x["id"] for x in res.json()}, ) def test_list_filter_by_type(self): @@ -45,7 +45,7 @@ def test_list_filter_by_type(self): "kat_test", "kat_test_2", }, - set([x["id"] for x in res.json()]), + {x["id"] for x in res.json()}, ) def test_list_filter_by_state(self): @@ -59,7 +59,7 @@ def test_list_filter_by_state(self): "kat_test_normalize", "kat_test_normalize_2", }, - set([x["id"] for x in plugins]), + {x["id"] for x in plugins}, ) self.assertTrue(all([x["enabled"] for x in plugins])) @@ -73,7 +73,7 @@ def test_list_filter_by_id(self): "kat_test_normalize", "kat_test_normalize_2", }, - set([x["id"] for x in (res.json())]), + {x["id"] for x in (res.json())}, ) def test_list_pagination(self): @@ -84,7 +84,7 @@ def test_list_pagination(self): "test-bit-1", "test-normalizer-1", }, - set([x["id"] for x in (res.json())]), + {x["id"] for x in (res.json())}, ) def test_list_repository(self): @@ -114,9 +114,9 @@ def test_get_plugin(self): assert res.json()["produces"] == ["text/html"] # For boefjes that are pulled from the local repository, we actually get the default mime_types - assert set(self.client.get("/v1/organisations/test-org/plugins/kat_test").json()["produces"]) == set( - ["boefje/kat_test"] - ) + assert set(self.client.get("/v1/organisations/test-org/plugins/kat_test").json()["produces"]) == { + "boefje/kat_test" + } def test_non_existing_plugin(self): res = self.client.get("/v1/organisations/test-org/repositories/test-repo/plugins/future-plugin") diff --git a/boefjes/boefjes/plugins/kat_dns/main.py b/boefjes/boefjes/plugins/kat_dns/main.py index db295c02deb..5b969e07b54 100644 --- a/boefjes/boefjes/plugins/kat_dns/main.py +++ b/boefjes/boefjes/plugins/kat_dns/main.py @@ -12,7 +12,7 @@ from boefjes.job_models import BoefjeMeta logger = logging.getLogger(__name__) -DEFAULT_RECORD_TYPES = set(("A", "AAAA", "CAA", "CERT", "RP", "SRV", "TXT", "MX", "NS", "CNAME", "DNAME", "SOA")) +DEFAULT_RECORD_TYPES = {"A", "AAAA", "CAA", "CERT", "RP", "SRV", "TXT", "MX", "NS", "CNAME", "DNAME", "SOA"} class ZoneNotFoundException(Exception): diff --git a/boefjes/boefjes/plugins/kat_fierce/fierce.py b/boefjes/boefjes/plugins/kat_fierce/fierce.py index 2fe557582ea..9bee57c175f 100644 --- a/boefjes/boefjes/plugins/kat_fierce/fierce.py +++ b/boefjes/boefjes/plugins/kat_fierce/fierce.py @@ -83,7 +83,7 @@ def head_request(url, timeout=2): conn.request("HEAD", "/") resp = conn.getresponse() return resp.getheaders() - except (ConnectionError, socket.gaierror, socket.timeout, OSError): + except (ConnectionError, socket.gaierror, TimeoutError, OSError): return [] finally: conn.close() @@ -310,7 +310,7 @@ def fierce(**kwargs): random_subdomain = str(random.randint(1e10, 1e11)) # noqa DUO102, non-cryptographic random use random_domain = concatenate_subdomains(domain, [random_subdomain]) wildcard = query(resolver, random_domain, record_type="A", tcp=kwargs["tcp"]) - wildcard_ips = set(rr.address for rr in wildcard.rrset) if wildcard else set() + wildcard_ips = {rr.address for rr in wildcard.rrset} if wildcard else set() subdomains = get_subdomains(kwargs["subdomains"], kwargs["subdomain_file"]) diff --git a/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py b/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py index 45513018419..95346fb279d 100644 --- a/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py +++ b/boefjes/boefjes/plugins/kat_webpage_analysis/find_images_in_html/normalize.py @@ -12,7 +12,7 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: soup = BeautifulSoup(raw, "html.parser") - images = set([img["src"] for img in soup.find_all("img", src=True)]) + images = {img["src"] for img in soup.find_all("img", src=True)} network_name = normalizer_meta.raw_data.boefje_meta.arguments["input"]["website"]["hostname"]["network"]["name"] host = normalizer_meta.raw_data.boefje_meta.arguments["input"]["website"]["hostname"]["name"] diff --git a/octopoes/tests/integration/test_xtdb_client.py b/octopoes/tests/integration/test_xtdb_client.py index c3b99132792..9f14ff01e09 100644 --- a/octopoes/tests/integration/test_xtdb_client.py +++ b/octopoes/tests/integration/test_xtdb_client.py @@ -223,26 +223,22 @@ def test_query_for_system_report( ) ], "services": list( - set( - [ + { + str(x.name) + for x in octopoes_api_connector.query( + "IPAddress. dict[str, Any]: ) ], "services": list( - set( - [ - service_mapping.get(str(x.name), SystemType.OTHER) + { + service_mapping.get(str(x.name), SystemType.OTHER) + for x in self.octopoes_api_connector.query( + "IPAddress. set[str]: mime_types = self.cleaned_data["mime_types"] - return set([mime_type.strip() for mime_type in mime_types.split(",") if mime_type.strip()]) + return {mime_type.strip() for mime_type in mime_types.split(",") if mime_type.strip()} From 3bc5a697a1ffa1b1acf9a16f6250dded2690c533 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Mon, 19 Feb 2024 09:29:22 +0100 Subject: [PATCH 50/85] Ipv6 report unit tests (#2512) --- .../report_types/ipv6_report/report.py | 2 + rocky/tests/reports/test_ipv6_report.py | 95 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 rocky/tests/reports/test_ipv6_report.py diff --git a/rocky/reports/report_types/ipv6_report/report.py b/rocky/reports/report_types/ipv6_report/report.py index 5648acf327c..0ceedb1d1cd 100644 --- a/rocky/reports/report_types/ipv6_report/report.py +++ b/rocky/reports/report_types/ipv6_report/report.py @@ -48,6 +48,8 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: results = {} for hostname in hostnames: + if ooi.reference.class_type == IPAddressV6: + return {hostname.name: {"enabled": True} for hostname in hostnames} path = Path.parse("Hostname. Date: Mon, 19 Feb 2024 12:16:10 +0100 Subject: [PATCH 51/85] Add documentation about yielding declared scan profiles in normalizers (#2501) Signed-off-by: Donny Peeters Co-authored-by: Jan Klopper Co-authored-by: ammar92 Co-authored-by: Jeroen Dekkers --- .../source/developer_documentation/boefjes.md | 89 ++++++++----- docs/source/developer_documentation/bytes.md | 2 +- docs/source/developer_documentation/keiko.md | 2 +- .../developer_documentation/octopoes.md | 2 +- docs/source/developer_documentation/rocky.md | 123 ++++++++++++------ docs/source/introduction/makeyourown.rst | 56 +++++++- 6 files changed, 199 insertions(+), 75 deletions(-) diff --git a/docs/source/developer_documentation/boefjes.md b/docs/source/developer_documentation/boefjes.md index 6df07a3a578..4a97989fd3c 100644 --- a/docs/source/developer_documentation/boefjes.md +++ b/docs/source/developer_documentation/boefjes.md @@ -1,9 +1,9 @@ # Boefjes This module has several entry points discussed below, but let us first consider the prerequisites and scope. -If you already have running setup and want to learn where each bit of functionality goes, read the following page: +If you already have a running setup and want to learn where each bit of functionality goes, read the following page: -[Developing Openkat Plugins]([https://docs.openkat.nl/introduction/makeyourown.html]) +[Developing Openkat Plugins](../introduction/makeyourown.rst) ## Prerequisites @@ -12,7 +12,7 @@ To run a development environment you need to have: - A running RabbitMQ service - A running Bytes API service - A `./env` containing the environment variables explained below -- Everything in `requirements.txt` installed +- Everything in the `requirements.txt` installed Optionally, you could have an instance of the octopoes api listening on a port that receives the normalized data from the normalizers. @@ -62,15 +62,36 @@ This feature can also be used to set default values for KAT-alogus settings. For will set the default value for the `TOP_PORTS` setting (used by the nmap Boefje). This default value can be overridden by setting any value for `TOP_PORTS` in the KAT-alogus. -## Design +## Technical Design -Boefjes will run as containerized workers pulling jobs from a centralized job queue: +Boefjes will run as containerized workers pulling jobs from a queue in the Scheduler: -![design](img/boefje_design.png) +```{mermaid} +sequenceDiagram + participant Boefje + participant Rocky + participant Scheduler + participant Normalizer + participant Bytes + participant Octopoes + Boefje->>+Scheduler: Get Boefje Task + Scheduler-->>Scheduler: boefje_task.status = DISPATCHED + Boefje->>Scheduler: boefje_task.status = RUNNING + Boefje-->>Boefje: Run Boefje Task + Boefje->>Scheduler: boefje_task.status = COMPLETED + Boefje->>Bytes: Save Raw + Bytes-->>Scheduler: Raw File Received + Scheduler->>Scheduler: Push Normalizer Task + Normalizer->>Scheduler: Get Normalizer Task + Scheduler-->>Scheduler: normalizer_task.status = DISPATCHED + Normalizer->>Bytes: Get Raw + Normalizer->>Scheduler: normalizer_task.status = RUNNING + Normalizer-->>Normalizer: Run Normalizer Task + Normalizer->>Scheduler: normalizer_task.status = COMPLETED + Normalizer->>Octopoes: Add object(s) +``` -Connections to other components, represented by the yellow squares, are abstracted by the modules inside them. The red -components live outside the boefjes module. The green core files however is what can be focused on and can be -developed/refactored further to support boefjes of all different kinds. +The connection between the Scheduler and Bytes is managed asynchronously through RabbitMQ. ### Boefje and Normalizer Workers @@ -82,7 +103,7 @@ like when the process [runs out of memory and is killed by Docker](https://githu No maximum size is defined on the queue since we want to avoid blocking. Hence, we manually check if the queue does not pile up beyond the number of workers, i.e. `n`. -#### Design +#### Parallel Workers The setup for the main process and workers: @@ -112,25 +133,27 @@ subgraph Process 0 end ``` -#### Worker failure mode -Rough representation of the failure mode when a SIGKILL has been sent to the worker: +#### Sending a SIGKILL to a worker process +A representation of the failure mode when a SIGKILL has been sent to the worker (also see `boefjes/app.py`): ```{mermaid} sequenceDiagram participant SchedulerRuntimeManager - participant handling_tasks - participant Worker1 + participant SharedDict + participant Queue + participant Worker[pid=1] participant Scheduler - participant Worker2 - Worker1->>handling_tasks: set p_item.id for worker1.pid - SchedulerRuntimeManager->>Worker1: if not is_alive() - SchedulerRuntimeManager->>handling_tasks: get p_item.id for worker1.pid - SchedulerRuntimeManager->>Scheduler: set p_item.status to FAILED - SchedulerRuntimeManager->>Worker1: close() - SchedulerRuntimeManager->>Worker2: start() + participant Worker[pid=2] + Worker[pid=1]->>SharedDict: set: SharedDict[1] = p_item.id + Worker[pid=1]->>Worker[pid=1]: receives SIGKILL + SchedulerRuntimeManager->>Worker[pid=1]: if not is_alive() + SchedulerRuntimeManager->>SharedDict: set p_item_id = SharedDict[1] + SchedulerRuntimeManager->>Scheduler: set p_item_id status to FAILED + SchedulerRuntimeManager->>Worker[pid=1]: close() + SchedulerRuntimeManager->>Worker[pid=2]: start() ``` - +Here, the `SharedDict` maps worker process IDs (PIDs) to the task they are handling. ### Running as a Docker container @@ -234,28 +257,34 @@ Here a `Boefje` object that wraps this metadata is defined, as well as `Normaliz Each module may also have its own `requirements.txt` file that lists dependencies not included in the base requirements. Furthermore, you can add static data such as a cover and a description (markdown) to show up in Rocky's KATalogus. -Example structure: +#### Example ```shell -$ tree boefjes/kat_dns -├── boefje.py +$ tree boefjes/plugins/kat_dns +├── boefje.json ├── cover.jpg ├── description.md ├── __init__.py ├── main.py ├── normalize.py -└── requirements.txt +├── normalizer.json +└── schema.json ``` -### Running the test suite +### Tests -To run the test suite, run: +To run the unit test suite, run: ```shell $ python -m pytest ``` -To lint the code using black, run: +For the KATalogus integration tests, run: +```shell +$ make itest +``` + +To lint the code using pre-commit, run: ```shell -$ python -m black . +$ pre-commit run --all-files ``` diff --git a/docs/source/developer_documentation/bytes.md b/docs/source/developer_documentation/bytes.md index 470a20fc2b6..30853163f94 100644 --- a/docs/source/developer_documentation/bytes.md +++ b/docs/source/developer_documentation/bytes.md @@ -30,7 +30,7 @@ $ docker run --rm -p 8002:8000 --env-file=/path/to/env bytes # change according ### Without Docker -To create and start a python virtual environment, run +To create and start a Python virtual environment, run ```shell $ python -m venv $PWD/.venv $ source .venv/bin/activate diff --git a/docs/source/developer_documentation/keiko.md b/docs/source/developer_documentation/keiko.md index 397818c51d4..12960fe4055 100644 --- a/docs/source/developer_documentation/keiko.md +++ b/docs/source/developer_documentation/keiko.md @@ -47,7 +47,7 @@ process. See [logging.json](logging.json) for an example. ## Building a new template Create a new directory in the `templates` directory, with the following files: - `template.tex`: the template file -- `model.json`: the python pydantic model, describing the shape of the report input data +- `model.json`: the Python Pydantic model, describing the shape of the report input data - `sample.json`: a sample input data file, this will be automatically shown in the API documentation As an example, look into the `templates/dns` directory. diff --git a/docs/source/developer_documentation/octopoes.md b/docs/source/developer_documentation/octopoes.md index 1772a377a55..ed7b0fa10a7 100644 --- a/docs/source/developer_documentation/octopoes.md +++ b/docs/source/developer_documentation/octopoes.md @@ -370,7 +370,7 @@ ref.tokenized.address.address # '2001:db8::1' ### OctopoesAPIConnector -The OctopoesAPIConnector class provides a python interface for connecting with Octopoes API. +The OctopoesAPIConnector class provides a Python interface for connecting with Octopoes API. It provides several methods for doing CRUD operations for the objects/entities. #### Querying objects diff --git a/docs/source/developer_documentation/rocky.md b/docs/source/developer_documentation/rocky.md index a95ce0b314c..494eff98fa7 100644 --- a/docs/source/developer_documentation/rocky.md +++ b/docs/source/developer_documentation/rocky.md @@ -1,19 +1,15 @@ -## Rocky +# Rocky Rocky is part of the openKAT project, made with Django. - -### Stack - -Django is the framework for this project. -To comply to government standards, use [Manon](https://github.com/minvws/nl-rdo-manon) for style and accessibility. +To comply to government standards, [Manon](https://github.com/minvws/nl-rdo-manon) is used for style and accessibility. Yarn is used as package manager and ParcelJS is used as bundler to compile the frontend (CSS and Javascript). -You can find the Manon repository here: [https://github.com/minvws/nl-rdo-manon](https://github.com/minvws/nl-rdo-manon) +You can find the Manon repository [here](https://github.com/minvws/nl-rdo-manon). -### Running Rocky +## Installation -#### Containerized +### Containerized -To run rocky from the docker container, from the parent directory `nl-kat-coordination`, just run: +To run rocky from using Docker, run this from the parent directory `nl-kat-coordination`: ```bash $ make kat @@ -21,58 +17,111 @@ $ make kat and continue reading this document at "First run". -#### Locally +### Local -To run rocky locally, follow these steps. +For a local set up, you need to start the Django app and compile the frontend. -### Installation +#### Django App -Yarn is used to bundle CSS and Javascript. -You can build Rocky locally using: +This requires a working Python (>3.10) environment. +One example of how to create, activate and initialize a development environment is: +```bash +$ python3 -m venv $PWD/.venv +$ source .venv/bin/activate +$ python3 -m pip install -r requirements-dev.txt +``` +Copy the `.env-dist` to a `.env` and configure the hosts and credentials to PostgreSQL, RabbitMQ and the other services. ```bash -$ make build +$ cp .env-dist .env +``` + +For instance, to configure the PostgreSQL database set the following variables: +``` +ROCKY_DB_HOST= +ROCKY_DB_PORT= +ROCKY_DB= +ROCKY_DB_USER= +ROCKY_DB_PASSWORD= +ROCKY_DB_DSN= ``` -This will set up Django and compile the frontend. +Here, `ROCKY_DB_DSN` is optional (e.g. `postgresql://username:password@hostname:port/database_name`) +and if not set, the other DB variables will be used. + -#### Running +Once your environment variables are set up (see `.env-dist`, you can initialize Rocky using: -You can run Rocky using: +```bash +$ make build-rocky-native +``` + +To start the Django server, run: ```bash $ make run ``` -#### First run -After running the first time, visit [localhost:8000](http://localhost:8000) in your browser. -Log in with credentials: admin / admin +#### Frontend + +Yarn is used to bundle CSS and Javascript. + +To compile the frontend using yarn locally, run: +```bash +$ yarn --ignore-engine +$ yarn build +``` -You will be prompted to create secure your account with a One Time Password, so get your authenticator ready. +To compile the frontend using Docker, run: +```bash +$ make build-rocky-frontend +``` -#### Testing +The app should be running at [localhost:8000](http://localhost:8000). -To run all tests, run: +#### TL;DR +Given a proper `.env` file, run: ```bash -$ make test +$ python3 -m venv $PWD/.venv +$ source .venv/bin/activate +$ python3 -m pip install -r requirements-dev.txt +$ make build-rocky-native +$ & make run +$ make build-rocky-frontend ``` -#### Database +## Development -To connect to the PostgreSQL database, set the following environment variables (e.g. "localhost", "5432" etc.): +### Testing + +To run all unit tests, run: + +```bash +$ make utest ``` -ROCKY_DB_HOST= -ROCKY_DB_PORT= -ROCKY_DB= -ROCKY_DB_USER= -ROCKY_DB_PASSWORD= -ROCKY_DB_DSN= + +#### Tip +A local Python environment is useful for unit testing even when using Docker. +Follow the first instructions in the local setup to create a Python environment. +Then create a `rocky/.env` from the template `rocky/.env-dist` and set `ROCKY_DB_HOST=localhost`. +Now for the unit tests you should be able to just run +```bash +$ pytest +``` + +to run them locally. + +You can easily parallelize the tests can be parallelized using pytest-xdist: +```bash +$ python -m pip install pytest-xdist +$ time pytest # 1:08,92 on 13-02-2024 +$ time pytest -n 8 # 21,749 on 13-02-2024 ``` -The `ROCKY_DB_DSN` is optional (e.g. `postgresql://username:password@hostname:port/database_name`) and if unset the other DB variables will be used to setup the database connection. +## Design ### Fonts license @@ -89,7 +138,7 @@ https://fonts.google.com/specimen/Open+Sans/about #### Tabler icons https://tabler-icons.io/ -## Rocky Design +## Technical Design ### Running a boefje @@ -119,7 +168,7 @@ sequenceDiagram ``` -## Rocky View Structure +### Rocky View Structure Rocky has a hierarchical set of views that are not easy to capture in a single diagram. We therefore made several diagrams to show the most coherent components. diff --git a/docs/source/introduction/makeyourown.rst b/docs/source/introduction/makeyourown.rst index 1768f52e86d..e5b4bc0b5f8 100644 --- a/docs/source/introduction/makeyourown.rst +++ b/docs/source/introduction/makeyourown.rst @@ -56,7 +56,7 @@ The existing boefjes can be viewed via the KATalog in OpenKAT and are on `GitHUB Object-types, classes and objects. ---------------------------------- -When we talk about object-types, we mean things like IPAddressV4. These have corresponding python classes that are all derived from the OOI base class. These classes are defined in the Octopoes models directory. +When we talk about object-types, we mean things like IPAddressV4. These have corresponding Python classes that are all derived from the OOI base class. These classes are defined in the Octopoes models directory. They are used everywhere, both in code and as strings in json definition files. @@ -179,7 +179,7 @@ The boefje itself imports the shodan api module, assigns an IP address to it and Normalizers ----------- -The normalizer imports the raw information, extracts the objects from it and gives them to Octopoes. Since OpenKAT 1.3.0, the normalizers are fully self-contained. They consist of the following files: +The normalizer imports the raw information, extracts the objects from it and gives them to Octopoes. They consist of the following files: - __init__.py - normalize.py @@ -188,7 +188,11 @@ The normalizer imports the raw information, extracts the objects from it and giv normalizer.json *************** -The normalizers translate the output of a boefje into objects that fit the data model. Each normalizer defines what input it accepts and what object-types it provides. In the case of the shodan normalizer, it involves the entire output of the shodan boefje (created based on IP address), where findings and ports come out. The normalizer.json defines these: +The normalizers translate the output of a boefje into objects that fit the data model. +Each normalizer defines what input it accepts and what object-types it provides. +In the case of the shodan normalizer, +it involves the entire output of the shodan boefje (created based on IP address), +where findings and ports come out. The `normalizer.json` defines these: .. code-block:: json @@ -207,7 +211,8 @@ The normalizers translate the output of a boefje into objects that fit the data normalize.py ************ -The file normalize.py contains the actual normalizer: Its only job is to parse raw data and create, fill and yield the actual objects. (of valid object-types that are subclassed from OOI like IPPort) +The file `normalize.py` contains the actual normalizer: Its only job is to parse raw data and create, +fill and yield the actual objects. (of valid object-types that are subclassed from OOI like IPPort) .. code-block:: python @@ -244,6 +249,45 @@ The file normalize.py contains the actual normalizer: Its only job is to parse r yield ft yield f +Yielding a ``DeclaredScanProfile`` +********************************** + +Additionally, normalizers can yield a ``DeclaredScanProfile``. +This is useful if you want to avoid the manual work of raising these levels through the interface for new objects. +Perhaps you have a trusted source of IP addresses and hostnames you are allowed to scan intrusively. +Or perhaps you do not have intrusive boefjes enabled and always want to perform a DNS scan on new IP addresses. + +As an example, see these lines in `kat_external_db/normalize.py`: + +.. code-block:: python + + def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI]: + ... + yield ip_address + yield DeclaredScanProfile(reference=ip_address.reference, level=3) + + +This indicates that the ip_address should automatically be assigned a declared scan profile of level 3. + +The safeguard here is that you `always` need to specify which normalizers are allowed to add these scan profiles. +This must be done through the ``SCAN_PROFILE_WHITELIST`` environment variable, which is a json-encoded mapping +of normalizer ids to the `maximum` scan level they are allowed to set. +An example value would be ``SCAN_PROFILE_WHITELIST='{"kat_external_db_normalize": 2}'``. + +When a higher level has been yielded, it will be lowered to the maximum. +Combining the code and whitelist above would therefore be equivalent to combining this code with the whitelist: + +.. code-block:: python + + def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI]: + ... + yield ip_address + yield DeclaredScanProfile(reference=ip_address.reference, level=2) + + +Of course, when the normalizer id is not present in the whitelist, the yielded scan profiles are ignored. + + Adding object-types =================== @@ -269,7 +313,9 @@ As with the boefje for shodan, here we again use the example from the functional _information_value = ["protocol", "port"] -Here it is defined that to an IPPort belongs an IPadress, a Protocol and a PortState. It also specifies how scan levels flow through this object-type and specifies the attributes that format the primary/natural key: "_natural_key_attrs = ["address", "protocol", "port"]". More explanation about scan levels / indemnities follows later in this document. +Here it is defined that to an ``IPPort`` belongs an ``IPAddress``, a ``Protocol`` and a ``PortState``. +It also specifies how scan levels flow through this object-type and specifies the attributes that format the primary/natural key: "_natural_key_attrs = ["address", "protocol", "port"]". +More explanation about scan levels / indemnities follows later in this document. The PortState is defined separately. This can be done for information that has a very specific nature so you can describe it. From 3bfc86739a6d535499f8dbe6f48ef446515ae2e0 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Mon, 19 Feb 2024 12:31:46 +0100 Subject: [PATCH 52/85] Fix/case insensitive hsts (#2505) Co-authored-by: Jan Klopper Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> --- octopoes/bits/check_hsts_header/check_hsts_header.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/octopoes/bits/check_hsts_header/check_hsts_header.py b/octopoes/bits/check_hsts_header/check_hsts_header.py index a7650649380..73e9811b51c 100644 --- a/octopoes/bits/check_hsts_header/check_hsts_header.py +++ b/octopoes/bits/check_hsts_header/check_hsts_header.py @@ -16,14 +16,18 @@ def run(input_ooi: HTTPHeader, additional_oois: list, config: dict[str, str]) -> max_age = int(config.get("max-age", one_year)) if config else one_year findings: [str] = [] - if "includeSubDomains" not in header.value: + headervalue = header.value.lower() + if "includesubdomains" not in headervalue: findings.append("The HSTS should include subdomains.") - if "max-age" not in header.value: + if "max-age" not in headervalue: findings.append("The cache validity period of the HSTS should be defined and should be at least 1 year.") - if "max-age" in header.value and int(header.value.split("=")[1].split(";")[0]) < max_age: - findings.append(f"The cache validity period of the HSTS should be at least be {max_age} seconds.") + try: + if "max-age" in headervalue and int(headervalue.split("=")[1].strip('"').split(";")[0]) < max_age: + findings.append(f"The cache validity period of the HSTS should be at least be {max_age} seconds.") + except ValueError: + findings.append("The max-age value should be an integer.") if findings: description: str = "List of HSTS findings:\n" From 2776cf237306a0be6b44414b35d5b8587c6a06f2 Mon Sep 17 00:00:00 2001 From: Rieven Date: Mon, 19 Feb 2024 17:15:36 +0100 Subject: [PATCH 53/85] Checks for future dates (observed_at) (#2023) Co-authored-by: Jan Klopper --- rocky/crisis_room/views.py | 4 +-- rocky/reports/views/aggregate_report.py | 4 +-- rocky/reports/views/base.py | 3 +- rocky/reports/views/generate_report.py | 4 +-- rocky/rocky/locale/django.pot | 16 ++++++--- rocky/rocky/views/finding_list.py | 5 ++- rocky/rocky/views/mixins.py | 13 +++++-- rocky/rocky/views/ooi_detail.py | 6 ++-- rocky/rocky/views/ooi_list.py | 9 +++-- rocky/rocky/views/ooi_report.py | 10 +++--- rocky/rocky/views/ooi_view.py | 9 +++-- rocky/tests/test_observed_at.py | 45 ++++++++++++++++++++++--- rocky/tools/forms/base.py | 11 ++++-- 13 files changed, 95 insertions(+), 44 deletions(-) diff --git a/rocky/crisis_room/views.py b/rocky/crisis_room/views.py index 4c06e86d005..6e16e8ba0ef 100644 --- a/rocky/crisis_room/views.py +++ b/rocky/crisis_room/views.py @@ -61,7 +61,7 @@ def sort_by_severity( def get_finding_type_severity_count(self, organization: Organization) -> dict[str, int]: try: api_connector = OctopoesAPIConnector(settings.OCTOPOES_API, organization.code) - return api_connector.count_findings_by_severity(valid_time=self.get_observed_at()) + return api_connector.count_findings_by_severity(valid_time=self.observed_at) except ConnectorException: messages.add_message( self.request, @@ -98,6 +98,6 @@ def get_context_data(self, **kwargs): context["org_finding_counts_per_severity_critical"] = self.sort_by_severity(org_finding_counts_per_severity) context["observed_at_form"] = self.get_connector_form() - context["observed_at"] = self.get_observed_at().date() + context["observed_at"] = self.observed_at.date() return context diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index b5580560a44..dd4b3af6f12 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -177,13 +177,13 @@ def get(self, request, *args, **kwargs): def generate_reports_for_oois(self) -> tuple[AggregateOrganisationReport, Any, dict[Any, dict[Any, Any]]]: aggregate_report, post_processed_data, report_data, error_oois = aggregate_reports( - self.octopoes_api_connector, self.get_oois(), self.selected_report_types, self.valid_time + self.octopoes_api_connector, self.get_oois(), self.selected_report_types, self.observed_at ) # If OOI could not be found or the date is incorrect, it will be shown to the user as a message error if error_oois: oois = ", ".join(set(error_oois)) - date = self.valid_time.date() + date = self.observed_at.date() error_message = _("No data could be found for %(oois)s. Object(s) did not exist on %(date)s.") % { "oois": oois, "date": date, diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index 5cad606ccd4..06e5d45463f 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -92,7 +92,7 @@ def get_oois(self) -> list[OOI]: if "all" in self.selected_oois: return self.octopoes_api_connector.list_objects( self.get_ooi_types(), - valid_time=self.valid_time, + valid_time=self.observed_at, limit=OOIList.HARD_LIMIT, scan_level=self.get_ooi_scan_levels(), scan_profile_type=self.get_ooi_profile_types(), @@ -165,7 +165,6 @@ def get_report_types(self) -> list[ReportType]: def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["observed_at"] = self.valid_time context["created_at"] = datetime.now() context["selected_oois"] = self.selected_oois context["selected_report_types"] = self.selected_report_types diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index d7324e42220..8d6bcdc6566 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -151,7 +151,7 @@ def generate_reports_for_oois(self) -> dict[str, dict[str, dict[str, str]]]: for report_type in self.report_types: if Reference.from_str(ooi).class_type in report_type.input_ooi_types: report = report_type(self.octopoes_api_connector) - data = report.generate_data(ooi, valid_time=self.valid_time) + data = report.generate_data(ooi, valid_time=self.observed_at) template = report.template_path report_data[ooi][report_type.name] = {"data": data, "template": template} except ObjectNotFoundException: @@ -161,7 +161,7 @@ def generate_reports_for_oois(self) -> dict[str, dict[str, dict[str, str]]]: # If OOI could not be found or the date is incorrect, it will be shown to the user as a message error if error_oois: oois = ", ".join(set(error_oois)) - date = self.valid_time.date() + date = self.observed_at.date() error_message = _("No data could be found for %(oois)s. Object(s) did not exist on %(date)s.") % { "oois": oois, "date": date, diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index ecf754ddac0..886682ff6a9 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-13 14:17+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -358,8 +358,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Withdraw acceptance of level L%(acl)s " -"clearance and responsibility\"\n" +" Withdraw L%(acl)s clearance and responsibility\n" " " msgstr "" @@ -380,8 +379,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Accept level L%(tcl)s clearance and " -"responsibility\"\n" +" Accept level L%(tcl)s clearance and responsibility\n" " " msgstr "" @@ -3985,6 +3983,10 @@ msgstr "" msgid "Date" msgstr "" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -6331,6 +6333,10 @@ msgstr "" msgid "Indemnification successfully set." msgstr "" +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" diff --git a/rocky/rocky/views/finding_list.py b/rocky/rocky/views/finding_list.py index 9917f8a74af..ca75dd8b888 100644 --- a/rocky/rocky/views/finding_list.py +++ b/rocky/rocky/views/finding_list.py @@ -54,7 +54,6 @@ class FindingListFilter(OctopoesView, ConnectorFormMixin, SeveritiesMixin, ListV def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) self.severities = self.get_severities() - self.valid_time = self.get_observed_at() self.muted_findings = request.GET.get("muted_findings", "non-muted") self.exclude_muted = self.muted_findings == "non-muted" @@ -63,7 +62,7 @@ def setup(self, request, *args, **kwargs): def get_queryset(self) -> FindingList: return FindingList( octopoes_connector=self.octopoes_api_connector, - valid_time=self.valid_time, + valid_time=self.observed_at, severities=self.severities, exclude_muted=self.exclude_muted, only_muted=self.only_muted, @@ -72,7 +71,7 @@ def get_queryset(self) -> FindingList: def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["observed_at_form"] = self.get_connector_form() - context["valid_time"] = self.valid_time + context["valid_time"] = self.observed_at context["severity_filter"] = FindingSeverityMultiSelectForm({"severity": list(self.severities)}) context["muted_findings_filter"] = MutedFindingSelectionForm({"muted_findings": self.muted_findings}) context["only_muted"] = self.only_muted diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index dc6d54d05bb..8cd99b07a70 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -54,14 +54,21 @@ class OOIAttributeError(AttributeError): class ObservedAtMixin: - def get_observed_at(self) -> datetime: + @cached_property + def observed_at(self) -> datetime: observed_at = self.request.GET.get("observed_at", None) if not observed_at: return datetime.now(timezone.utc) try: datetime_format = "%Y-%m-%d" - return convert_date_to_datetime(datetime.strptime(observed_at, datetime_format)) + date_time = convert_date_to_datetime(datetime.strptime(observed_at, datetime_format)) + if date_time.date() > datetime.now(timezone.utc).date(): + messages.warning( + self.request, + _("The selected date is in the future."), + ) + return date_time except ValueError: try: ret = datetime.fromisoformat(observed_at) @@ -345,7 +352,7 @@ def get_ooi(self, pk: str = None, observed_at: datetime | None = None) -> OOI: pk = self.get_ooi_id() if observed_at is None: - observed_at = self.get_observed_at() + observed_at = self.observed_at return self.get_object_from_tree(pk, observed_at) diff --git a/rocky/rocky/views/ooi_detail.py b/rocky/rocky/views/ooi_detail.py index 4b6a0779737..8d1b8127209 100644 --- a/rocky/rocky/views/ooi_detail.py +++ b/rocky/rocky/views/ooi_detail.py @@ -98,7 +98,7 @@ def handle_page_action(self, action: str) -> bool: def get_current_ooi(self) -> OOI | None: # self.ooi is already the current state of the OOI - if self.get_observed_at().date() == datetime.utcnow().date(): + if self.observed_at.date() == datetime.utcnow().date(): return self.ooi try: return self.get_ooi(pk=self.get_ooi_id(), observed_at=datetime.now(timezone.utc)) @@ -162,7 +162,7 @@ def get_context_data(self, **kwargs): context["ooi"] = self.ooi declarations, observations, inferences = self.get_origins( - self.ooi.reference, self.get_observed_at(), self.organization + self.ooi.reference, self.observed_at, self.organization ) inference_params = self.octopoes_api_connector.list_origin_parameters( @@ -184,7 +184,7 @@ def get_context_data(self, **kwargs): context["object_details"] = format_display(self.get_ooi_properties(self.ooi), ignore=["json_schema"]) context["ooi_types"] = self.get_ooi_types_input_values(self.ooi) context["observed_at_form"] = self.get_connector_form() - context["observed_at"] = self.get_observed_at() + context["observed_at"] = self.observed_at context["is_question"] = isinstance(self.ooi, Question) context["ooi_past_due"] = context["observed_at"].date() < datetime.utcnow().date() context["related"] = self.get_related_objects(context["observed_at"]) diff --git a/rocky/rocky/views/ooi_list.py b/rocky/rocky/views/ooi_list.py index 3e2fbc8f381..57bba733357 100644 --- a/rocky/rocky/views/ooi_list.py +++ b/rocky/rocky/views/ooi_list.py @@ -209,7 +209,6 @@ def get_organization_indemnification(self): class OOIListExportView(BaseOOIListView): def get(self, request, *args, **kwargs): file_type = request.GET.get("file_type") - observed_at = self.get_observed_at() filters = self.get_active_filters() queryset = self.get_queryset() @@ -217,7 +216,7 @@ def get(self, request, *args, **kwargs): exports = [ { - "observed_at": str(observed_at), + "observed_at": str(self.observed_at), "filters": str(filters), } ] @@ -235,7 +234,7 @@ def get(self, request, *args, **kwargs): response = HttpResponse( json.dumps(exports), content_type="application/json", - headers={"Content-Disposition": "attachment; filename=ooi_list_" + str(observed_at) + ".json"}, + headers={"Content-Disposition": "attachment; filename=ooi_list_" + str(self.observed_at) + ".json"}, ) return response @@ -243,12 +242,12 @@ def get(self, request, *args, **kwargs): elif file_type == "csv": response = HttpResponse( content_type="text/csv", - headers={"Content-Disposition": "attachment; filename=ooi_list_" + str(observed_at) + ".csv"}, + headers={"Content-Disposition": "attachment; filename=ooi_list_" + str(self.observed_at) + ".csv"}, ) writer = csv.writer(response) writer.writerow(["observed_at", "filters"]) - writer.writerow([str(observed_at), str(filters)]) + writer.writerow([str(self.observed_at), str(filters)]) writer.writerow(["key", "name", "ooi_type"]) for ooi in ooi_list: writer.writerow( diff --git a/rocky/rocky/views/ooi_report.py b/rocky/rocky/views/ooi_report.py index 1557f1101b5..4cc7fc2b991 100644 --- a/rocky/rocky/views/ooi_report.py +++ b/rocky/rocky/views/ooi_report.py @@ -42,7 +42,7 @@ class OOIReportView(BaseOOIDetailView): connector_form_class = OOIReportSettingsForm def get(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse: - if self.get_observed_at() > convert_date_to_datetime(datetime.now(timezone.utc)): + if self.observed_at > convert_date_to_datetime(datetime.now(timezone.utc)): messages.error( request, _("You can't generate a report for an OOI on a date in the future."), @@ -65,7 +65,7 @@ def get_context_data(self, **kwargs): class OOIReportPDFView(SingleOOITreeMixin): def get(self, request, *args, **kwargs): - valid_time = self.get_observed_at() + valid_time = self.observed_at ooi = self.get_ooi() reports_service = ReportsService(keiko_client) @@ -113,7 +113,7 @@ def get(self, request, *args, **kwargs): findings = FindingList( self.octopoes_api_connector, - self.get_observed_at(), + self.observed_at, severities, exclude_muted=exclude_muted, only_muted=only_muted, @@ -123,12 +123,12 @@ def get(self, request, *args, **kwargs): try: report = reports_service.get_organization_finding_report( - self.get_observed_at(), + self.observed_at, self.organization.name, generate_findings_metadata(findings, severities), FindingReportQuery( self.organization.code, - self.get_observed_at().date(), + self.observed_at.date(), severities, origin=f"{request.scheme}://{request.get_host()}", exclude_muted=exclude_muted, diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index f9b192b9f81..32fefab11cc 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -38,7 +38,6 @@ class OOIFilterView(ConnectorFormMixin, OctopoesView): def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) - self.valid_time = self.get_observed_at() self.filtered_ooi_types = request.GET.getlist("ooi_type", []) self.clearance_levels = request.GET.getlist("clearance_level", []) self.clearance_types = request.GET.getlist("clearance_type", []) @@ -71,7 +70,7 @@ def get_ooi_types(self) -> set[type[OOI]]: def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["observed_at"] = self.valid_time + context["observed_at"] = self.observed_at context["observed_at_form"] = self.get_connector_form() context["ooi_types_selection"] = self.filtered_ooi_types @@ -93,7 +92,7 @@ def get_queryset(self) -> OOIList: return OOIList( self.octopoes_api_connector, ooi_types=self.get_ooi_types(), - valid_time=self.get_observed_at(), + valid_time=self.observed_at, scan_level=self.get_ooi_scan_levels(), scan_profile_type=self.get_ooi_profile_types(), ) @@ -101,7 +100,7 @@ def get_queryset(self) -> OOIList: def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["mandatory_fields"] = get_mandatory_fields(self.request) - context["total_oois"] = len(self.object_list) # will be auto set on get_queryset() + context["total_oois"] = len(self.object_list) return context @@ -115,7 +114,7 @@ def get_context_data(self, **kwargs): context["ooi"] = self.ooi context["mandatory_fields"] = get_mandatory_fields(self.request) - context["observed_at"] = self.get_observed_at() + context["observed_at"] = self.observed_at return context diff --git a/rocky/tests/test_observed_at.py b/rocky/tests/test_observed_at.py index 246a8f58d04..c9371ca75a3 100644 --- a/rocky/tests/test_observed_at.py +++ b/rocky/tests/test_observed_at.py @@ -1,6 +1,14 @@ -from datetime import datetime, timezone +from datetime import datetime, timedelta, timezone +from django.urls import resolve, reverse +from tools.forms.base import ObservedAtForm + +from octopoes.models.ooi.network import Network +from octopoes.models.pagination import Paginated +from octopoes.models.types import OOIType from rocky.views.mixins import ObservedAtMixin +from rocky.views.ooi_list import OOIListView +from tests.conftest import setup_request def test_observed_at_no_value(mocker): @@ -12,7 +20,7 @@ def test_observed_at_no_value(mocker): observed_at = ObservedAtMixin() observed_at.request = mock_request - assert observed_at.get_observed_at() == now + assert observed_at.observed_at == now def test_observed_at_date(mocker): @@ -21,7 +29,7 @@ def test_observed_at_date(mocker): observed_at = ObservedAtMixin() observed_at.request = mock_request - assert observed_at.get_observed_at() == datetime(2023, 10, 24, 23, 59, 59, 999999, tzinfo=timezone.utc) + assert observed_at.observed_at == datetime(2023, 10, 24, 23, 59, 59, 999999, tzinfo=timezone.utc) def test_observed_at_datetime(mocker): @@ -30,7 +38,7 @@ def test_observed_at_datetime(mocker): observed_at = ObservedAtMixin() observed_at.request = mock_request - assert observed_at.get_observed_at() == datetime(2023, 10, 24, 9, 34, 56, 0, tzinfo=timezone.utc) + assert observed_at.observed_at == datetime(2023, 10, 24, 9, 34, 56, 0, tzinfo=timezone.utc) def test_observed_at_datetime_with_timezone(mocker): @@ -39,4 +47,31 @@ def test_observed_at_datetime_with_timezone(mocker): observed_at = ObservedAtMixin() observed_at.request = mock_request - assert observed_at.get_observed_at() == datetime(2023, 10, 24, 9, 34, 56, 0, tzinfo=timezone.utc) + assert observed_at.observed_at == datetime(2023, 10, 24, 9, 34, 56, 0, tzinfo=timezone.utc) + + +def test_observed_at_future_date(rf, client_member, mock_organization_view_octopoes): + kwargs = {"organization_code": client_member.organization.code} + url = reverse("ooi_list", kwargs=kwargs) + + day_plus_1_in_future = (datetime.now(tz=timezone.utc) + timedelta(days=1)).strftime("%Y-%m-%d") + request = rf.get( + url, + {"observed_at": day_plus_1_in_future}, + ) + request.resolver_match = resolve(url) + + setup_request(request, client_member.user) + + mock_organization_view_octopoes().list.return_value = Paginated[OOIType]( + count=200, items=[Network(name="testnetwork")] * 150 + ) + + _ = OOIListView.as_view()(request, organization_code=client_member.organization.code) + + messages = list(request._messages) + assert messages[0].message == "The selected date is in the future." + + form = ObservedAtForm(data=request.GET) + assert not form.is_valid() + assert "The selected date is in the future. Please select a different date." in form.errors["observed_at"] diff --git a/rocky/tools/forms/base.py b/rocky/tools/forms/base.py index c6c69a98f19..d50f8ebe23f 100644 --- a/rocky/tools/forms/base.py +++ b/rocky/tools/forms/base.py @@ -1,5 +1,5 @@ import contextlib -import datetime +from datetime import datetime, timezone from typing import Any from django import forms @@ -63,11 +63,18 @@ class ObservedAtForm(BaseRockyForm): observed_at = forms.DateField( label=_("Date"), widget=DateInput(format="%Y-%m-%d"), - initial=lambda: datetime.datetime.now(tz=datetime.timezone.utc), + initial=lambda: datetime.now(tz=timezone.utc).date(), required=True, help_text=OBSERVED_AT_HELP_TEXT, ) + def clean_observed_at(self): + observed_at = self.cleaned_data["observed_at"] + now = datetime.now(tz=timezone.utc) + if observed_at > now.date(): + raise forms.ValidationError(_("The selected date is in the future. Please select a different date.")) + return observed_at + class LabeledCheckboxInput(forms.CheckboxInput): template_name = "forms/widgets/checkbox_option.html" From 02c344a5418581063f293710e7c80d1b51fac7ce Mon Sep 17 00:00:00 2001 From: Madelon Dohmen <99282220+madelondohmen@users.noreply.github.com> Date: Mon, 19 Feb 2024 17:31:11 +0100 Subject: [PATCH 54/85] Mail Report unit tests (#2513) Co-authored-by: Jeroen Dekkers --- .../report_types/mail_report/report.py | 20 ++- rocky/tests/conftest.py | 33 +++++ rocky/tests/reports/test_mail_report.py | 119 ++++++++++++++++++ 3 files changed, 161 insertions(+), 11 deletions(-) create mode 100644 rocky/tests/reports/test_mail_report.py diff --git a/rocky/reports/report_types/mail_report/report.py b/rocky/reports/report_types/mail_report/report.py index 30f05efac2d..c5c849cd6f0 100644 --- a/rocky/reports/report_types/mail_report/report.py +++ b/rocky/reports/report_types/mail_report/report.py @@ -12,7 +12,7 @@ logger = getLogger(__name__) -MAIL_FINDINGS = ["KAT-NO-SPF", "KAT-NO-DMARC", "KAT-NO-DKIM"] +MAIL_FINDING_TYPES = ["KAT-NO-SPF", "KAT-NO-DMARC", "KAT-NO-DKIM"] class MailReport(Report): @@ -25,7 +25,7 @@ class MailReport(Report): def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: hostnames = [] - mail_security_measures = {} + finding_types = {} try: ooi = self.octopoes_api_connector.get(Reference.from_str(input_ooi), valid_time) @@ -46,44 +46,42 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: number_of_dkim = number_of_hostnames for hostname in hostnames: - measures = self._get_measures(valid_time, hostname.reference) - mail_security_measures[hostname.primary_key] = measures + finding_types[hostname.primary_key] = self._get_mail_finding_types(valid_time, hostname.reference) number_of_spf -= ( 1 if list( - filter(lambda finding: finding.id == "KAT-NO-SPF", mail_security_measures[hostname.primary_key]) + filter(lambda finding_type: finding_type.id == "KAT-NO-SPF", finding_types[hostname.primary_key]) ) else 0 ) number_of_dmarc -= ( 1 if list( - filter(lambda finding: finding.id == "KAT-NO-DMARC", mail_security_measures[hostname.primary_key]) + filter(lambda finding_type: finding_type.id == "KAT-NO-DMARC", finding_types[hostname.primary_key]) ) else 0 ) number_of_dkim -= ( 1 if list( - filter(lambda finding: finding.id == "KAT-NO-DKIM", mail_security_measures[hostname.primary_key]) + filter(lambda finding_type: finding_type.id == "KAT-NO-DKIM", finding_types[hostname.primary_key]) ) else 0 ) return { "input_ooi": input_ooi, - "finding_types": mail_security_measures, + "finding_types": finding_types, "number_of_hostnames": number_of_hostnames, "number_of_spf": number_of_spf, "number_of_dmarc": number_of_dmarc, "number_of_dkim": number_of_dkim, } - def _get_measures(self, valid_time: datetime, hostname) -> list[OOI]: + def _get_mail_finding_types(self, valid_time: datetime, hostname) -> list[OOI]: finding_types = self.octopoes_api_connector.query( "Hostname. Date: Mon, 19 Feb 2024 18:15:17 +0100 Subject: [PATCH 55/85] Fix typing in rocky and few other places (#2519) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- .pre-commit-config.yaml | 4 +- boefjes/boefjes/clients/bytes_client.py | 2 +- .../katalogus/dependencies/encryption.py | 4 +- boefjes/boefjes/katalogus/models.py | 3 +- .../boefjes/katalogus/tests/test_settings.py | 3 +- boefjes/boefjes/local.py | 3 +- boefjes/boefjes/sql/setting_storage.py | 2 +- .../modules/dummy_boefje_environment/main.py | 2 +- boefjes/tests/test_tasks.py | 2 +- bytes/bytes/database/db_models.py | 8 ++-- bytes/bytes/database/sql_meta_repository.py | 2 +- bytes/bytes/timestamping/rfc3161.py | 2 +- mula/scheduler/app.py | 2 +- .../connectors/listeners/listeners.py | 9 ++-- mula/scheduler/connectors/services/bytes.py | 2 +- mula/scheduler/storage/filters/functions.py | 2 +- pyproject.toml | 11 ++++- rocky/account/forms/__init__.py | 17 +++++-- rocky/account/mixins.py | 10 +--- rocky/account/views/account.py | 8 +++- rocky/fmea/forms.py | 2 +- rocky/katalogus/client.py | 13 +++-- rocky/katalogus/views/mixins.py | 16 +++---- rocky/katalogus/views/plugin_settings_add.py | 4 ++ .../katalogus/views/plugin_settings_delete.py | 2 +- rocky/onboarding/view_helpers.py | 12 +++-- rocky/onboarding/views.py | 29 +++++++++-- .../aggregate_organisation_report/report.py | 41 ++++++++-------- rocky/reports/report_types/definitions.py | 48 +++++++------------ rocky/reports/report_types/helpers.py | 28 +++++------ .../multi_organization_report/report.py | 28 +++++++---- .../report_types/rpki_report/report.py | 13 +++-- .../vulnerability_report/report.py | 21 ++++---- rocky/reports/views/aggregate_report.py | 3 ++ rocky/reports/views/base.py | 24 ++++++---- rocky/reports/views/generate_report.py | 7 ++- rocky/reports/views/multi_report.py | 2 +- rocky/rocky/admin.py | 13 ----- rocky/rocky/bytes_client.py | 25 +++++----- rocky/rocky/keiko.py | 2 +- rocky/rocky/scheduler.py | 4 +- .../oois/ooi_detail_origins_inference.html | 4 +- rocky/rocky/views/finding_add.py | 2 +- rocky/rocky/views/finding_list.py | 3 +- rocky/rocky/views/mixins.py | 21 ++++---- rocky/rocky/views/ooi_detail.py | 4 +- rocky/rocky/views/ooi_findings.py | 2 +- rocky/rocky/views/ooi_list.py | 6 ++- rocky/rocky/views/ooi_report.py | 12 ++--- rocky/rocky/views/ooi_tree.py | 11 ++--- rocky/rocky/views/ooi_view.py | 7 +-- rocky/rocky/views/organization_member_add.py | 6 ++- rocky/rocky/views/organization_member_list.py | 3 +- rocky/rocky/views/organization_settings.py | 6 ++- rocky/rocky/views/scans.py | 3 +- rocky/rocky/views/upload_csv.py | 2 +- rocky/tests/conftest.py | 6 +-- rocky/tests/integration/test_reports.py | 15 +++--- rocky/tools/add_ooi_information.py | 12 ++--- rocky/tools/admin.py | 14 ++++-- rocky/tools/forms/base.py | 7 +-- rocky/tools/forms/finding_type.py | 7 +-- rocky/tools/forms/ooi.py | 2 +- rocky/tools/forms/ooi_form.py | 8 ++-- .../management/commands/export_migrations.py | 2 - .../management/commands/generate_report.py | 2 + .../management/commands/setup_dev_account.py | 7 +-- .../management/commands/setup_test_users.py | 6 +-- .../migrations/0031_merge_20230301_2012.py | 2 +- .../migrations/0036_merge_20230504_1629.py | 2 +- ...er_organization_options_0038_delete_job.py | 2 +- .../migrations/0041_merge_20230731_1131.py | 2 +- rocky/tools/models.py | 24 ++++------ rocky/tools/ooi_helpers.py | 6 +-- rocky/tools/view_helpers.py | 31 +++++++----- rocky/whitelist.py | 1 + 76 files changed, 373 insertions(+), 312 deletions(-) delete mode 100644 rocky/rocky/admin.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7d41245f78a..726045caa10 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -81,10 +81,12 @@ repos: exclude: | (?x)( ^boefjes/boefjes/plugins | + ^boefjes/tools | ^keiko/templates | ^mula/whitelist\.py$ | ^octopoes/ | - ^rocky/ | + ^rocky/fmea/ | + ^rocky/whitelist\.py$ | /tests/ | docs/source/conf\.py$ | setup\.py$ diff --git a/boefjes/boefjes/clients/bytes_client.py b/boefjes/boefjes/clients/bytes_client.py index 94430f2b8d9..0d85a47c603 100644 --- a/boefjes/boefjes/clients/bytes_client.py +++ b/boefjes/boefjes/clients/bytes_client.py @@ -34,7 +34,7 @@ def request(self, method: str, url: str | bytes, **kwargs) -> requests.Response: def retry_with_login(function: ClientSessionMethod) -> ClientSessionMethod: @wraps(function) - def wrapper(self, *args, **kwargs): # type: ignore + def wrapper(self, *args, **kwargs): try: return function(self, *args, **kwargs) except HTTPError as error: diff --git a/boefjes/boefjes/katalogus/dependencies/encryption.py b/boefjes/boefjes/katalogus/dependencies/encryption.py index 586a3277940..45e001a9fb1 100644 --- a/boefjes/boefjes/katalogus/dependencies/encryption.py +++ b/boefjes/boefjes/katalogus/dependencies/encryption.py @@ -3,8 +3,6 @@ from nacl.public import Box, PrivateKey, PublicKey -from boefjes.katalogus.models import Base64Str - class EncryptMiddleware(abc.ABC): @abc.abstractmethod @@ -29,7 +27,7 @@ class NaclBoxMiddleware(EncryptMiddleware): More info: https://pynacl.readthedocs.io/en/latest/public/ """ - def __init__(self, private_key: Base64Str, public_key: Base64Str): + def __init__(self, private_key: str, public_key: str): sk = PrivateKey(base64.b64decode(private_key)) pk = PublicKey(base64.b64decode(public_key)) self.box: Box = Box(sk, pk) diff --git a/boefjes/boefjes/katalogus/models.py b/boefjes/boefjes/katalogus/models.py index 1f08f5404b0..137bc70256f 100644 --- a/boefjes/boefjes/katalogus/models.py +++ b/boefjes/boefjes/katalogus/models.py @@ -1,6 +1,6 @@ import datetime from enum import Enum -from typing import Literal, NewType +from typing import Literal from pydantic import AnyHttpUrl, BaseModel, Field @@ -60,7 +60,6 @@ class Bit(Plugin): PluginType = Boefje | Normalizer | Bit -Base64Str = NewType("Base64Str", str) class EncryptionMiddleware(Enum): diff --git a/boefjes/boefjes/katalogus/tests/test_settings.py b/boefjes/boefjes/katalogus/tests/test_settings.py index 6314340f4f2..19189599b5b 100644 --- a/boefjes/boefjes/katalogus/tests/test_settings.py +++ b/boefjes/boefjes/katalogus/tests/test_settings.py @@ -4,7 +4,6 @@ from nacl.public import PrivateKey from boefjes.katalogus.dependencies.encryption import NaclBoxMiddleware -from boefjes.katalogus.models import Base64Str class TestSettingsEncryption(TestCase): @@ -12,7 +11,7 @@ def setUp(self) -> None: sk = PrivateKey.generate() sk_b64 = base64.b64encode(bytes(sk)).decode() pub_b64 = base64.b64encode(bytes(sk.public_key)).decode() - self.encryption = NaclBoxMiddleware(private_key=Base64Str(sk_b64), public_key=Base64Str(pub_b64)) + self.encryption = NaclBoxMiddleware(private_key=sk_b64, public_key=pub_b64) def test_encode_decode(self): msg = "The president is taking the underpass" diff --git a/boefjes/boefjes/local.py b/boefjes/boefjes/local.py index 07bb439eecb..34fe9e88c01 100644 --- a/boefjes/boefjes/local.py +++ b/boefjes/boefjes/local.py @@ -35,7 +35,8 @@ def __enter__(self): return os.environ def __exit__(self, exc_type, exc_val, exc_tb): - os.environ = self._original_environment + os.environ.clear() + os.environ.update(self._original_environment) class LocalBoefjeJobRunner(BoefjeJobRunner): diff --git a/boefjes/boefjes/sql/setting_storage.py b/boefjes/boefjes/sql/setting_storage.py index 1b2b9cf3357..f7c8d182fdc 100644 --- a/boefjes/boefjes/sql/setting_storage.py +++ b/boefjes/boefjes/sql/setting_storage.py @@ -73,7 +73,7 @@ def create_setting_storage(session) -> SettingsStorage: def create_encrypter(): - encrypter = IdentityMiddleware() + encrypter: EncryptMiddleware = IdentityMiddleware() if get_context().env.encryption_middleware == EncryptionMiddleware.NACL_SEALBOX: encrypter = NaclBoxMiddleware( get_context().env.katalogus_private_key_b64, diff --git a/boefjes/tests/modules/dummy_boefje_environment/main.py b/boefjes/tests/modules/dummy_boefje_environment/main.py index df90edf0df5..077d8aefa8e 100644 --- a/boefjes/tests/modules/dummy_boefje_environment/main.py +++ b/boefjes/tests/modules/dummy_boefje_environment/main.py @@ -4,4 +4,4 @@ def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: - return [(set(), repr(environ).encode())] + return [(set(), repr(dict(environ)).encode())] diff --git a/boefjes/tests/test_tasks.py b/boefjes/tests/test_tasks.py index 0f0e936538d..50b8d4b464a 100644 --- a/boefjes/tests/test_tasks.py +++ b/boefjes/tests/test_tasks.py @@ -202,6 +202,6 @@ def test_correct_local_runner_hash(self) -> None: assert Path(path / "__pycache__/pytest__init__.cpython-311.pyc").is_file() assert Path(path / "__pycache__/pytest_main.cpython-311.pyc").is_file() - assert boefje_resource_1.runnable_hash == "05b87bc4a93bdcf8c4a931278f90c413e5f2fa47c23b28fdf28b5304f8a82374" + assert boefje_resource_1.runnable_hash == "4bae5e869bd17759bf750bf357fdee1eedff5768d407248b8ddcb63d0abdee19" assert boefje_resource_2.runnable_hash == "e0c46fb915778b06f69cd5934b2157733cef84d67fc89c563c5bbd965ad52949" assert boefje_resource_3.runnable_hash == "0185c90d3d1a4dc1490ec918374f84e8a480101f98db14d434638147dd82c626" diff --git a/bytes/bytes/database/db_models.py b/bytes/bytes/database/db_models.py index 287ea59cd8d..1d08ebf2bde 100644 --- a/bytes/bytes/database/db_models.py +++ b/bytes/bytes/database/db_models.py @@ -5,7 +5,7 @@ from bytes.database.db import SQL_BASE -class BoefjeMetaInDB(SQL_BASE): # type: ignore +class BoefjeMetaInDB(SQL_BASE): __tablename__ = "boefje_meta" id = Column(UUID, primary_key=True) @@ -24,7 +24,7 @@ class BoefjeMetaInDB(SQL_BASE): # type: ignore Index("ix_boefje_meta_organization_boefje_id", BoefjeMetaInDB.organization, BoefjeMetaInDB.boefje_id) -class SigningProviderInDB(SQL_BASE): # type: ignore +class SigningProviderInDB(SQL_BASE): __tablename__ = "signing_provider" id = Column(Integer, primary_key=True, autoincrement=True) @@ -32,7 +32,7 @@ class SigningProviderInDB(SQL_BASE): # type: ignore url = Column(String(length=256), nullable=False, unique=True) -class RawFileInDB(SQL_BASE): # type: ignore +class RawFileInDB(SQL_BASE): __tablename__ = "raw_file" id = Column(UUID, primary_key=True) @@ -51,7 +51,7 @@ class RawFileInDB(SQL_BASE): # type: ignore mime_types = Column(ARRAY(String(length=64)), default=lambda: []) -class NormalizerMetaInDB(SQL_BASE): # type: ignore +class NormalizerMetaInDB(SQL_BASE): __tablename__ = "normalizer_meta" id = Column(UUID, primary_key=True) diff --git a/bytes/bytes/database/sql_meta_repository.py b/bytes/bytes/database/sql_meta_repository.py index 8a87b2b4448..d0a4bc6185d 100644 --- a/bytes/bytes/database/sql_meta_repository.py +++ b/bytes/bytes/database/sql_meta_repository.py @@ -235,7 +235,7 @@ def create_meta_data_repository() -> Iterator[MetaDataRepository]: class ObjectNotFoundException(Exception): - def __init__(self, cls: type[SQL_BASE], **kwargs): # type: ignore + def __init__(self, cls: type[SQL_BASE], **kwargs): super().__init__(f"The object of type {cls} was not found for query parameters {kwargs}") diff --git a/bytes/bytes/timestamping/rfc3161.py b/bytes/bytes/timestamping/rfc3161.py index fc484c6d0c9..4f03da60b57 100644 --- a/bytes/bytes/timestamping/rfc3161.py +++ b/bytes/bytes/timestamping/rfc3161.py @@ -29,7 +29,7 @@ def verify(self, link: RetrievalLink, secure_hash: SecureHash) -> bool: assert rfc3161ng.get_timestamp(time_stamp_token) - return self.timestamper.check(time_stamp_token, data=secure_hash.encode()) # type: ignore + return self.timestamper.check(time_stamp_token, data=secure_hash.encode()) def get_signing_provider_url(self) -> str | None: """Get the specific signing provider url""" diff --git a/mula/scheduler/app.py b/mula/scheduler/app.py index 34337bcac58..b1c08b4d50f 100644 --- a/mula/scheduler/app.py +++ b/mula/scheduler/app.py @@ -53,7 +53,7 @@ def __init__(self, ctx: context.AppContext) -> None: self.logger: structlog.BoundLogger = structlog.getLogger(__name__) self.ctx: context.AppContext = ctx - threading.excepthook = self.unhandled_exception # type: ignore + threading.excepthook = self.unhandled_exception self.stop_event: threading.Event = threading.Event() self.lock: threading.Lock = threading.Lock() diff --git a/mula/scheduler/connectors/listeners/listeners.py b/mula/scheduler/connectors/listeners/listeners.py index 6bdba2aaa75..84f9a878e86 100644 --- a/mula/scheduler/connectors/listeners/listeners.py +++ b/mula/scheduler/connectors/listeners/listeners.py @@ -197,6 +197,9 @@ def stop(self) -> None: self.logger.debug("RabbitMQ connection closed") def _close_callback(self): - self.channel.stop_consuming() - self.channel.close() - self.connection.close() + if self.channel: + self.channel.stop_consuming() + self.channel.close() + + if self.connection: + self.connection.close() diff --git a/mula/scheduler/connectors/services/bytes.py b/mula/scheduler/connectors/services/bytes.py index 2a4bc45ba37..d2c8c954a57 100644 --- a/mula/scheduler/connectors/services/bytes.py +++ b/mula/scheduler/connectors/services/bytes.py @@ -17,7 +17,7 @@ def retry_with_login(function: ClientSessionMethod) -> ClientSessionMethod: @wraps(function) - def wrapper(self, *args, **kwargs): # type: ignore + def wrapper(self, *args, **kwargs): try: return function(self, *args, **kwargs) except HTTPError as error: diff --git a/mula/scheduler/storage/filters/functions.py b/mula/scheduler/storage/filters/functions.py index a4c476a6cb7..9158643e6a6 100644 --- a/mula/scheduler/storage/filters/functions.py +++ b/mula/scheduler/storage/filters/functions.py @@ -64,6 +64,6 @@ def apply_filter(entity, query: Query, filter_request: FilterRequest) -> Query: expressions.append(expression) # Apply the filter operation to the query - query = query.filter(FILTER_OPERATORS[operator](*expressions)) # type: ignore + query = query.filter(FILTER_OPERATORS[operator](*expressions)) return query diff --git a/pyproject.toml b/pyproject.toml index 4a0a896f514..5a55517e47c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,10 +5,17 @@ line-length = 120 [tool.mypy] python_version = "3.10" plugins = ["pydantic.mypy"] -strict = false -ignore_missing_imports = true +strict = true follow_imports = "skip" +disallow_subclassing_any = false disallow_untyped_decorators = false # Needed for FastAPI decorators +disallow_any_generics = false +disallow_untyped_calls = false +disallow_incomplete_defs = false +disallow_untyped_defs = false +no_implicit_reexport = false +warn_return_any = false + [tool.setuptools_scm] write_to = "_version.py" diff --git a/rocky/account/forms/__init__.py b/rocky/account/forms/__init__.py index 99fe76d7890..448a075559d 100644 --- a/rocky/account/forms/__init__.py +++ b/rocky/account/forms/__init__.py @@ -1,4 +1,13 @@ -from account.forms.account_setup import * -from account.forms.login import * -from account.forms.password_reset import * -from account.forms.token import * +from account.forms.account_setup import ( + AccountTypeSelectForm, + IndemnificationAddForm, + MemberRegistrationForm, + OnboardingOrganizationUpdateForm, + OrganizationForm, + OrganizationMemberEditForm, + OrganizationUpdateForm, + SetPasswordForm, +) +from account.forms.login import LoginForm +from account.forms.password_reset import PasswordResetForm +from account.forms.token import TwoFactorBackupTokenForm, TwoFactorSetupTokenForm, TwoFactorVerifyTokenForm diff --git a/rocky/account/mixins.py b/rocky/account/mixins.py index b3190d90d47..94591d4614d 100644 --- a/rocky/account/mixins.py +++ b/rocky/account/mixins.py @@ -9,7 +9,7 @@ from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import DeclaredScanProfile, Reference, ScanLevel -from rocky.bytes_client import BytesClient, get_bytes_client +from rocky.bytes_client import get_bytes_client from rocky.exceptions import ( AcknowledgedClearanceLevelTooLowException, IndemnificationNotPresentException, @@ -64,14 +64,6 @@ def __contains__(self, perm_name): class OrganizationView(View): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.organization: Organization | None = None - self.octopoes_api_connector: OctopoesAPIConnector | None = None - self.bytes_client: BytesClient | None = None - self.organization_member = None - self.indemnification_present = False - def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) diff --git a/rocky/account/views/account.py b/rocky/account/views/account.py index 4c6c31c699d..49c5c298565 100644 --- a/rocky/account/views/account.py +++ b/rocky/account/views/account.py @@ -1,7 +1,9 @@ from enum import Enum +from django.http import HttpRequest from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView +from tools.models import OrganizationMember from account.mixins import OrganizationView @@ -12,10 +14,14 @@ class PageActions(Enum): class OOIClearanceMixin: + request: HttpRequest + organization_member: OrganizationMember + def post(self, request, *args, **kwargs): if "action" in self.request.POST: self.handle_page_action(request.POST["action"]) - return self.get(request, *args, **kwargs) + # Mypy doesn't have the information to understand this + return self.get(request, *args, **kwargs) # type: ignore[attr-defined] def handle_page_action(self, action: str): if action == PageActions.ACCEPT_CLEARANCE.value: diff --git a/rocky/fmea/forms.py b/rocky/fmea/forms.py index d37bbd096b0..7bf986cfb9b 100644 --- a/rocky/fmea/forms.py +++ b/rocky/fmea/forms.py @@ -72,7 +72,7 @@ class Meta: "aria-describedby": _("explanation-detectability_level"), }, ), - "effect": CheckboxGroup(toggle_all_button=False), + "effect": CheckboxGroup(), "risk_class": forms.Textarea(attrs={"rows": 1, "readonly": ""}), } diff --git a/rocky/katalogus/client.py b/rocky/katalogus/client.py index 61c2fbe63cc..b187ce2b72e 100644 --- a/rocky/katalogus/client.py +++ b/rocky/katalogus/client.py @@ -18,7 +18,7 @@ class Plugin(BaseModel): id: str - repository_id: str | None = None + repository_id: str name: str version: str | None = None authors: str | None = None @@ -40,7 +40,7 @@ def can_scan(self, member) -> bool: class Boefje(Plugin): scan_level: SCAN_LEVEL consumes: set[type[OOI]] - options: list[str] = None + options: list[str] | None = None runnable_hash: str | None = None produces: set[str] @@ -101,9 +101,12 @@ def get_plugin_schema(self, plugin_id) -> dict | None: try: Draft202012Validator.check_schema(schema) - return schema except SchemaError as error: logger.warning("Invalid schema found for plugin %s, %s", plugin_id, error) + else: + return schema + + return None def get_plugin_settings(self, plugin_id: str) -> dict: response = self.session.get(f"{self.organization_uri}/{plugin_id}/settings") @@ -224,8 +227,10 @@ def parse_normalizer(normalizer: dict) -> Normalizer: def parse_plugin(plugin: dict) -> Boefje | Normalizer: if plugin["type"] == "boefje": return parse_boefje(plugin) - if plugin["type"] == "normalizer": + elif plugin["type"] == "normalizer": return parse_normalizer(plugin) + else: + raise Exception(f"Unknown plugin type: {plugin['type']}") def get_katalogus(organization: str) -> KATalogusClientV1: diff --git a/rocky/katalogus/views/mixins.py b/rocky/katalogus/views/mixins.py index fae99481e9f..de171ad336f 100644 --- a/rocky/katalogus/views/mixins.py +++ b/rocky/katalogus/views/mixins.py @@ -33,19 +33,15 @@ class SinglePluginView(OrganizationView): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.katalogus_client: KATalogusClientV1 | None = None - self.plugin_schema = None - self.plugin: KATalogusBoefje | KATalogusNormalizer = None + katalogus_client: KATalogusClientV1 + plugin: KATalogusBoefje | KATalogusNormalizer - def setup(self, request, *args, **kwargs): + def setup(self, request, *args, plugin_id: str, **kwargs): """ Prepare organization info and KAT-alogus API client. """ - super().setup(request, *args, **kwargs) + super().setup(request, *args, plugin_id=plugin_id, **kwargs) self.katalogus_client = get_katalogus(self.organization.code) - plugin_id = kwargs.get("plugin_id") try: self.plugin = self.katalogus_client.get_plugin(plugin_id) @@ -70,11 +66,11 @@ def dispatch(self, request, *args, **kwargs): def is_required_field(self, field: str) -> bool: """Check whether this field should be required, defaults to False.""" - return self.plugin_schema and field in self.plugin_schema.get("required", []) + return bool(self.plugin_schema and field in self.plugin_schema.get("required", [])) def is_secret_field(self, field: str) -> bool: """Check whether this field should be secret, defaults to False.""" - return self.plugin_schema and field in self.plugin_schema.get("secret", []) + return bool(self.plugin_schema and field in self.plugin_schema.get("secret", [])) class NormalizerMixin(OctopoesView): diff --git a/rocky/katalogus/views/plugin_settings_add.py b/rocky/katalogus/views/plugin_settings_add.py index 99a074dced7..73e387c38be 100644 --- a/rocky/katalogus/views/plugin_settings_add.py +++ b/rocky/katalogus/views/plugin_settings_add.py @@ -23,6 +23,10 @@ class PluginSettingsAddView(OrganizationPermissionRequiredMixin, SinglePluginVie def get_form(self, **kwargs): settings = self.katalogus_client.get_plugin_settings(self.plugin.id) + # This helps mypy understand that self.plugin_schema can't be None + # because of the check in dispatch() + assert self.plugin_schema is not None + return PluginSchemaForm(self.plugin_schema, settings, **self.get_form_kwargs()) def dispatch(self, request, *args, **kwargs): diff --git a/rocky/katalogus/views/plugin_settings_delete.py b/rocky/katalogus/views/plugin_settings_delete.py index 57ec8d8caf4..03c348e8b70 100644 --- a/rocky/katalogus/views/plugin_settings_delete.py +++ b/rocky/katalogus/views/plugin_settings_delete.py @@ -70,7 +70,7 @@ def delete(self, request, *args, **kwargs): _("Settings for plugin {} successfully deleted.").format(self.plugin.name), ) except RequestException as e: - if e.response.status_code == 404: + if e.response and e.response.status_code == 404: messages.add_message( request, messages.WARNING, diff --git a/rocky/onboarding/view_helpers.py b/rocky/onboarding/view_helpers.py index 14dbad0cb4b..3b9afe550f5 100644 --- a/rocky/onboarding/view_helpers.py +++ b/rocky/onboarding/view_helpers.py @@ -1,6 +1,6 @@ -from account.mixins import OrganizationView from django.urls import reverse_lazy from django.utils.translation import gettext_lazy as _ +from tools.models import Organization from tools.view_helpers import StepsMixin ONBOARDING_PERMISSIONS = ( @@ -12,7 +12,9 @@ DNS_REPORT_LEAST_CLEARANCE_LEVEL = 1 -class KatIntroductionStepsMixin(StepsMixin, OrganizationView): +class KatIntroductionStepsMixin(StepsMixin): + organization: Organization + def build_steps(self): steps = [ { @@ -36,6 +38,8 @@ def build_steps(self): class KatIntroductionRegistrationStepsMixin(StepsMixin): + organization: Organization + def build_steps(self): steps = [ { @@ -52,7 +56,9 @@ def build_steps(self): return steps -class KatIntroductionAdminStepsMixin(StepsMixin, OrganizationView): +class KatIntroductionAdminStepsMixin(StepsMixin): + organization: Organization + def build_steps(self): steps = [ { diff --git a/rocky/onboarding/views.py b/rocky/onboarding/views.py index d093297905b..cbd359c0496 100644 --- a/rocky/onboarding/views.py +++ b/rocky/onboarding/views.py @@ -58,6 +58,8 @@ class OnboardingBreadcrumbsMixin(BreadcrumbsMixin): + organization: Organization + def build_breadcrumbs(self): return [ { @@ -82,6 +84,7 @@ def get(self, request, *args, **kwargs): class OnboardingIntroductionView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_1_introduction.html" @@ -92,6 +95,7 @@ class OnboardingIntroductionView( class OnboardingChooseReportInfoView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_2a_choose_report_info.html" @@ -102,6 +106,7 @@ class OnboardingChooseReportInfoView( class OnboardingChooseReportTypeView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_2b_choose_report_type.html" @@ -112,6 +117,7 @@ class OnboardingChooseReportTypeView( class OnboardingSetupScanSelectPluginsView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_3g_setup_scan_select_plugins.html" @@ -157,6 +163,7 @@ def get_context_data(self, **kwargs: Any) -> dict[str, Any]: class OnboardingSetupScanOOIInfoView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_3a_setup_scan_ooi_info.html" @@ -335,7 +342,11 @@ def get_context_data(self, **kwargs): class OnboardingClearanceLevelIntroductionView( - OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, OnboardingBreadcrumbsMixin, TemplateView + OrganizationPermissionRequiredMixin, + KatIntroductionStepsMixin, + OnboardingBreadcrumbsMixin, + OrganizationView, + TemplateView, ): template_name = "step_3d_clearance_level_introduction.html" permission_required = "tools.can_set_clearance_level" @@ -374,6 +385,7 @@ class OnboardingAcknowledgeClearanceLevelView( KatIntroductionStepsMixin, OnboardingBreadcrumbsMixin, OOIClearanceMixin, + OrganizationView, TemplateView, ): template_name = "step_3e_trusted_acknowledge_clearance_level.html" @@ -391,6 +403,7 @@ class OnboardingSetClearanceLevelView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, OnboardingBreadcrumbsMixin, + OrganizationView, FormView, ): template_name = "step_3f_set_clearance_level.html" @@ -420,6 +433,7 @@ def add_success_notification(self): class OnboardingReportView( OrganizationPermissionRequiredMixin, KatIntroductionStepsMixin, + OrganizationView, TemplateView, ): template_name = "step_4_report.html" @@ -547,6 +561,7 @@ def add_success_notification(self, org_name): class OnboardingOrganizationUpdateView( OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, + OrganizationView, UpdateView, ): """ @@ -591,7 +606,7 @@ def get_success_url(self) -> str: class OnboardingAccountSetupIntroView( - OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, TemplateView + OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, OrganizationView, TemplateView ): """ Step 4: Split flow to or continue with single account or continue to multiple account creation @@ -602,8 +617,10 @@ class OnboardingAccountSetupIntroView( permission_required = "tools.add_organizationmember" -class OnboardingAccountCreationMixin(OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, FormView): - account_type = None +class OnboardingAccountCreationMixin( + OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, OrganizationView, FormView +): + account_type: str | None = None permission_required = "tools.add_organizationmember" def get_form_kwargs(self): @@ -616,7 +633,9 @@ def get_form_kwargs(self): # Account setup for multiple user accounts: redteam, admins, clients -class OnboardingChooseUserTypeView(OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, TemplateView): +class OnboardingChooseUserTypeView( + OrganizationPermissionRequiredMixin, KatIntroductionAdminStepsMixin, OrganizationView, TemplateView +): """ Step 1: Introduction about how to create multiple user accounts """ diff --git a/rocky/reports/report_types/aggregate_organisation_report/report.py b/rocky/reports/report_types/aggregate_organisation_report/report.py index a3a6457c6bc..27febcb485e 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/report.py +++ b/rocky/reports/report_types/aggregate_organisation_report/report.py @@ -1,5 +1,6 @@ from datetime import datetime from logging import getLogger +from typing import Any from django.utils.translation import gettext_lazy as _ @@ -41,8 +42,8 @@ class AggregateOrganisationReport(AggregateReport): } template_path = "aggregate_organisation_report/report.html" - def post_process_data(self, data, valid_time): - systems = {"services": {}} + def post_process_data(self, data: dict[str, Any], valid_time) -> dict[str, Any]: + systems: dict[str, dict[str, Any]] = {"services": {}} services = {} open_ports = {} ipv6 = {} @@ -53,8 +54,8 @@ def post_process_data(self, data, valid_time): unique_ips = set() unique_hostnames = set() terms = [] - rpki = {"rpki_ips": {}} - safe_connections = {"sc_ips": {}} + rpki_ips = {} + safe_connections_ips = {} recommendations = [] total_systems_basic_security = 0 @@ -109,12 +110,10 @@ def post_process_data(self, data, valid_time): vulnerabilities[ip] = vulnerabilities_data if report_id == RPKIReport.id: - rpki["rpki_ips"].update({ip: value for ip, value in report_specific_data["rpki_ips"].items()}) + rpki_ips.update({ip: value for ip, value in report_specific_data["rpki_ips"].items()}) if report_id == SafeConnectionsReport.id: - safe_connections["sc_ips"].update( - {ip: value for ip, value in report_specific_data["sc_ips"].items()} - ) + safe_connections_ips.update({ip: value for ip, value in report_specific_data["sc_ips"].items()}) mail_report_data = self.collect_system_specific_data(data, services, SystemType.MAIL, MailReport.id) web_report_data = self.collect_system_specific_data(data, services, SystemType.WEB, WebSystemReport.id) @@ -125,10 +124,10 @@ def post_process_data(self, data, valid_time): terms.append(str(system)) # Basic security cleanup - basic_security = {"rpki": {}, "system_specific": {}, "safe_connections": {}} + basic_security: dict[str, Any] = {"rpki": {}, "system_specific": {}, "safe_connections": {}} # Safe connections - for ip, findings in safe_connections["sc_ips"].items(): + for ip, findings in safe_connections_ips.items(): ip_services = systems["services"][str(ip)]["services"] for service in ip_services: @@ -150,7 +149,7 @@ def post_process_data(self, data, valid_time): recommendations.extend({finding_type.recommendation for finding_type in findings}) # RPKI - for ip, compliance in rpki["rpki_ips"].items(): + for ip, compliance in rpki_ips.items(): ip_services = systems["services"][str(ip)]["services"] for service in services: @@ -198,20 +197,20 @@ def post_process_data(self, data, valid_time): } for ip in systems_for_service: - if ip not in rpki["rpki_ips"]: + if ip not in rpki_ips: continue basic_security["summary"][service]["rpki"]["number_of_compliant"] += ( - 1 if rpki["rpki_ips"][ip]["exists"] and rpki["rpki_ips"][ip]["valid"] else 0 + 1 if rpki_ips[ip]["exists"] and rpki_ips[ip]["valid"] else 0 ) basic_security["summary"][service]["rpki"]["total"] += 1 for ip in systems_for_service: - if ip not in safe_connections["sc_ips"]: + if ip not in safe_connections_ips: continue basic_security["summary"][service]["safe_connections"]["number_of_compliant"] += ( - 1 if not safe_connections["sc_ips"][ip] else 0 + 1 if not safe_connections_ips[ip] else 0 ) basic_security["summary"][service]["safe_connections"]["total"] += 1 @@ -415,10 +414,10 @@ def is_mail_compliant(result): "config_oois": config_oois, } - def collect_system_specific_data(self, data, services, system_type: SystemType, report_id: str): + def collect_system_specific_data(self, data, services, system_type: str, report_id: str) -> dict[str, Any]: """Given a system, return a list of report data from the right sub-reports based on the related report_id""" - report_data = {} + report_data: dict[str, Any] = {} for service, systems_for_service in services.items(): # Search for reports where the input ooi relates to the current service, based on ip or hostname @@ -444,16 +443,18 @@ def aggregate_reports( input_ooi_references: list[OOI], selected_report_types: list[str], valid_time: datetime, -): +) -> tuple[AggregateOrganisationReport, dict[str, Any], dict[str, Any], list[str]]: aggregate_report = AggregateOrganisationReport(connector) - report_data = {} + report_data: dict[str, Any] = {} error_oois = [] for ooi in input_ooi_references: report_data[ooi.primary_key] = {} try: for options, report_types in aggregate_report.reports.items(): - for report_type in report_types: + # Mypy doesn't support TypedDict and .values() + # https://github.com/python/mypy/issues/7981 + for report_type in report_types: # type: ignore[attr-defined] if ( Reference.from_str(ooi).class_type in report_type.input_ooi_types and report_type.id in selected_report_types diff --git a/rocky/reports/report_types/definitions.py b/rocky/reports/report_types/definitions.py index 5975f157241..4d36332f775 100644 --- a/rocky/reports/report_types/definitions.py +++ b/rocky/reports/report_types/definitions.py @@ -1,4 +1,3 @@ -from abc import ABC from datetime import datetime from logging import getLogger from pathlib import Path @@ -16,27 +15,25 @@ class ReportPlugins(TypedDict): optional: list[str] -class AggregateReportSubReports(TypedDict): - required: list[str] - optional: list[str] - - -class Report(ABC): +class BaseReport: id: str name: str description: str - plugins: ReportPlugins - input_ooi_types: set[OOIType] template_path: str = "report.html" def __init__(self, octopoes_api_connector: OctopoesAPIConnector): self.octopoes_api_connector = octopoes_api_connector + +class Report(BaseReport): + plugins: ReportPlugins + input_ooi_types: set[OOIType] + def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: raise NotImplementedError @classmethod - def class_attributes(cls) -> dict[str, any]: + def class_attributes(cls) -> dict[str, Any]: return { "id": cls.id, "name": cls.name, @@ -47,32 +44,23 @@ def class_attributes(cls) -> dict[str, any]: } -class AggregateReport(ABC): - id: str - name: str - description: str - reports: AggregateReportSubReports - template_path: str = "report.html" - - def __init__(self, octopoes_api_connector): - self.octopoes_api_connector = octopoes_api_connector +class MultiReport(BaseReport): + plugins: ReportPlugins + input_ooi_types: set[OOIType] - def post_process_data(self, data: dict[str, Any], valid_time: datetime) -> dict[str, Any]: + def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: raise NotImplementedError -class MultiReport(ABC): - id: str - name: str - description: str - plugins: ReportPlugins - input_ooi_types: set[OOIType] - template_path: str = "report.html" +class AggregateReportSubReports(TypedDict): + required: list[type[Report] | type[MultiReport]] + optional: list[type[Report] | type[MultiReport]] - def __init__(self, octopoes_api_connector): - self.octopoes_api_connector = octopoes_api_connector - def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: +class AggregateReport(BaseReport): + reports: AggregateReportSubReports + + def post_process_data(self, data: dict[str, Any], valid_time: datetime) -> dict[str, Any]: raise NotImplementedError diff --git a/rocky/reports/report_types/helpers.py b/rocky/reports/report_types/helpers.py index 7aff426908a..6d77bb151a2 100644 --- a/rocky/reports/report_types/helpers.py +++ b/rocky/reports/report_types/helpers.py @@ -1,8 +1,6 @@ -from abc import ABCMeta - from octopoes.models import OOI, Reference from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport -from reports.report_types.definitions import Report +from reports.report_types.definitions import AggregateReport, MultiReport, Report from reports.report_types.dns_report.report import DNSReport from reports.report_types.ipv6_report.report import IPv6Report from reports.report_types.mail_report.report import MailReport @@ -51,14 +49,14 @@ def get_report_types_for_ooi(ooi_pk: str) -> list[type[Report]]: return [report for report in REPORTS if ooi_type in report.input_ooi_types] -def get_report_types_for_oois(ooi_pks: list[str]) -> set[type[Report]]: +def get_report_types_for_oois(ooi_pks: list[str]) -> set[type[Report] | type[MultiReport]]: """ Get all report types that can be generated for a given list of OOIs """ return {report for ooi_pk in ooi_pks for report in get_report_types_for_ooi(ooi_pk)} -def get_report_by_id(report_id: str) -> type[Report]: +def get_report_by_id(report_id: str) -> type[Report] | type[MultiReport]: """ Get report type by id """ @@ -68,7 +66,7 @@ def get_report_by_id(report_id: str) -> type[Report]: raise ValueError(f"Report with id {report_id} not found") -def get_reports(report_ids: list[str]) -> list[Report]: +def get_reports(report_ids: list[str]) -> list[type[Report] | type[MultiReport]]: return [get_report_by_id(report_id) for report_id in report_ids] @@ -76,19 +74,19 @@ def get_plugins_for_report_ids(reports: list[str]) -> dict[str, set[str]]: """ Get all boefjes that are required and optional for a given list of reports """ - required_boefjes = set() - optional_boefjes = set() - - reports = get_reports(reports) + required_boefjes: set[str] = set() + optional_boefjes: set[str] = set() - for report in reports: + for report in get_reports(reports): required_boefjes.update(report.plugins["required"]) optional_boefjes.update(report.plugins["optional"]) return {"required": required_boefjes, "optional": optional_boefjes} -def get_report_types_from_aggregate_report(aggregate_report: ABCMeta) -> dict[str, set[type[Report]]]: +def get_report_types_from_aggregate_report( + aggregate_report: type[AggregateReport], +) -> dict[str, set[type[Report] | type[MultiReport]]]: required_reports = set() optional_reports = set() @@ -98,9 +96,11 @@ def get_report_types_from_aggregate_report(aggregate_report: ABCMeta) -> dict[st return {"required": required_reports, "optional": optional_reports} -def get_ooi_types_from_aggregate_report(aggregate_report: ABCMeta) -> set[type[OOI]]: +def get_ooi_types_from_aggregate_report(aggregate_report: type[AggregateReport]) -> set[type[OOI]]: ooi_types = set() for reports in aggregate_report.reports.values(): - for report in reports: + # Mypy doesn't support TypedDict and .values() + # https://github.com/python/mypy/issues/7981 + for report in reports: # type: ignore[attr-defined] ooi_types.update(report.input_ooi_types) return ooi_types diff --git a/rocky/reports/report_types/multi_organization_report/report.py b/rocky/reports/report_types/multi_organization_report/report.py index d5fa7bcf7dc..a0c6b5534e4 100644 --- a/rocky/reports/report_types/multi_organization_report/report.py +++ b/rocky/reports/report_types/multi_organization_report/report.py @@ -1,5 +1,5 @@ from logging import getLogger -from typing import Any +from typing import Any, TypedDict from django.utils.translation import gettext_lazy as _ @@ -11,6 +11,16 @@ logger = getLogger(__name__) +class OpenPortsDict(TypedDict): + total: int + ports: dict + + +class SystemSpecificDict(TypedDict): + total: int + checks: dict + + class MultiOrganizationReport(MultiReport): id = "multi-organization-report" name = _("Multi Organization Report") @@ -28,7 +38,7 @@ def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: } """ - tags = {} + tags: dict[str, list[str]] = {} total_critical_vulnerabilities = 0 basic_securities = [] total_findings = 0 @@ -36,15 +46,15 @@ def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: total_hostnames = 0 service_counts = {} asset_vulnerabilities = [] - open_ports = {"total": 0, "ports": {}} - services = {} + open_ports: OpenPortsDict = {"total": 0, "ports": {}} + services: dict[str, Any] = {} basic_security_summary = {} safe_connections_summary = {"number_of_available": 0, "number_of_ips": 0} - system_specific = {} + system_specific: dict[str, SystemSpecificDict] = {} rpki_summary = {} ipv6 = {} recommendation_counts = {} - organization_metrics = {} + organization_metrics: dict[str, Any] = {} for organization, report_data in data.items(): basic_security = {"compliant": 0, "total": 0} @@ -205,7 +215,9 @@ def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: system_vulnerabilities[vulnerability][service] += 1 system_vulnerability_totals[service] += 1 - system_vulnerabilities = sorted(system_vulnerabilities.items(), key=lambda x: x[1]["cvss"] or 0, reverse=True) + system_vulnerabilities = dict( + sorted(system_vulnerabilities.items(), key=lambda x: x[1]["cvss"] or 0, reverse=True) + ) return { "multi_data": data, @@ -223,7 +235,7 @@ def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: "total_hostnames": total_hostnames, "service_counts": service_counts, "asset_vulnerabilities": asset_vulnerabilities, - "system_vulnerabilities": dict(system_vulnerabilities), + "system_vulnerabilities": system_vulnerabilities, "system_vulnerability_totals": system_vulnerability_totals, "open_ports": open_ports, "basic_security": { diff --git a/rocky/reports/report_types/rpki_report/report.py b/rocky/reports/report_types/rpki_report/report.py index 220862b6960..359bc9ab67c 100644 --- a/rocky/reports/report_types/rpki_report/report.py +++ b/rocky/reports/report_types/rpki_report/report.py @@ -1,6 +1,6 @@ from datetime import datetime from logging import getLogger -from typing import Any +from typing import Any, TypedDict from django.utils.translation import gettext_lazy as _ @@ -13,6 +13,11 @@ logger = getLogger(__name__) +class RPKIData(TypedDict): + exists: bool + valid: bool + + class RPKIReport(Report): id = "rpki-report" name = _("RPKI Report") @@ -38,7 +43,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: else: ips = [ooi] - rpki_ips = {} + rpki_ips: dict[Reference, RPKIData] = {} number_of_ips = len(ips) number_of_compliant = number_of_ips number_of_available = number_of_ips @@ -47,11 +52,9 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: finding_types = self.octopoes_api_connector.query( "IPAddress. list[datetime]: valid_time_history = [transaction.valid_time for transaction in transaction_record] return valid_time_history - def get_findings(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[str, list[str | Finding]]]: + def get_findings(self, input_ooi: str, valid_time: datetime) -> dict[str, FindingsData]: aggregated_findings = [] finding_types = [] - findings_data = {} + findings_data: dict[str, FindingsData] = {} try: ooi = self.octopoes_api_connector.get(Reference.from_str(input_ooi), valid_time) @@ -82,9 +87,9 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ data = {} critical = RiskLevelSeverity.CRITICAL.value - findings = self.get_findings(input_ooi, valid_time) + all_findings = self.get_findings(input_ooi, valid_time) - for ip, findings_data in findings.items(): + for ip, findings_data in all_findings.items(): summary = {} vulnerabilities = {} total_criticals = 0 @@ -106,9 +111,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ time_history = self.get_finding_valid_time_history(finding.primary_key) if time_history: - first_seen = time_history[0] - else: - first_seen = "-" + first_seen = str(time_history[0]) origins = self.octopoes_api_connector.list_origins(result=finding.ooi, valid_time=valid_time) sources = ", ".join([origin.method for origin in origins]) diff --git a/rocky/reports/views/aggregate_report.py b/rocky/reports/views/aggregate_report.py index dd4b3af6f12..7b65ea07512 100644 --- a/rocky/reports/views/aggregate_report.py +++ b/rocky/reports/views/aggregate_report.py @@ -1,3 +1,4 @@ +from collections.abc import Sequence from typing import Any from django.conf import settings @@ -11,6 +12,7 @@ from tools.view_helpers import url_with_querystring from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport, aggregate_reports +from reports.report_types.definitions import Report from reports.report_types.helpers import ( get_ooi_types_from_aggregate_report, get_plugins_for_report_ids, @@ -145,6 +147,7 @@ class AggregateReportView(BreadcrumbsAggregateReportView, BaseReportView, Templa template_name = "aggregate_report.html" current_step = 6 ooi_types = get_ooi_types_from_aggregate_report(AggregateOrganisationReport) + report_types: Sequence[type[Report]] def get(self, request, *args, **kwargs): if "json" in self.request.GET and self.request.GET["json"] == "true": diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index 06e5d45463f..973cb0ce1ce 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -1,3 +1,4 @@ +from collections.abc import Sequence from datetime import datetime from logging import getLogger from typing import Any @@ -17,7 +18,7 @@ from octopoes.models import OOI from octopoes.models.types import OOIType from reports.forms import OOITypeMultiCheckboxForReportForm -from reports.report_types.definitions import Report, ReportType +from reports.report_types.definitions import MultiReport, Report, ReportType from reports.report_types.helpers import get_plugins_for_report_ids, get_report_by_id from rocky.views.mixins import OOIList from rocky.views.ooi_view import OOIFilterView @@ -28,7 +29,7 @@ } -def get_selection(request: HttpRequest, pre_selection: dict[str, str | list[str]] | None = None) -> str: +def get_selection(request: HttpRequest, pre_selection: dict[str, str | Sequence[str]] | None = None) -> str: if pre_selection is not None: return "?" + urlencode(pre_selection, True) return "?" + urlencode(request.GET, True) @@ -82,7 +83,7 @@ def setup(self, request, *args, **kwargs): self.selected_oois = list(set(request.GET.getlist("ooi", []))) self.selected_report_types = request.GET.getlist("report_type", []) - self.report_types = self.get_report_types_from_choice() + self.report_types: Sequence[type[Report] | type[MultiReport]] = self.get_report_types_from_choice() report_ids = [report.id for report in self.report_types] self.plugins, self.all_plugins_enabled = self.get_required_optional_plugins( get_plugins_for_report_ids(report_ids) @@ -113,23 +114,27 @@ def get_ooi_filter_forms(self, ooi_types: set[OOIType]) -> dict[str, Form]: ) } - def get_report_types_for_generate_report(self, reports: set[type[Report]]) -> list[dict[str, str]]: + def get_report_types_for_generate_report( + self, reports: set[type[Report] | type[MultiReport]] + ) -> list[dict[str, str]]: return [ {"id": report_type.id, "name": report_type.name, "description": report_type.description} for report_type in reports ] def get_report_types_for_aggregate_report( - self, reports_dict: dict[str, set[type[Report]]] + self, reports_dict: dict[str, set[type[Report] | type[MultiReport]]] ) -> dict[str, list[dict[str, str]]]: report_types = {} for option, reports in reports_dict.items(): report_types[option] = self.get_report_types_for_generate_report(reports) return report_types - def get_required_optional_plugins(self, plugin_ids: dict[str, set[str]]) -> (dict[str, Plugin], dict[str, bool]): + def get_required_optional_plugins( + self, plugin_ids_dict: dict[str, set[str]] + ) -> tuple[dict[str, list[Plugin]], dict[str, bool]]: plugins = {} - for plugin, plugin_ids in plugin_ids.items(): + for plugin, plugin_ids in plugin_ids_dict.items(): plugins[plugin] = [get_katalogus(self.organization.code).get_plugin(plugin_id) for plugin_id in plugin_ids] all_plugins_enabled = { @@ -138,14 +143,14 @@ def get_required_optional_plugins(self, plugin_ids: dict[str, set[str]]) -> (dic return plugins, all_plugins_enabled - def are_plugins_enabled(self, plugins_dict: dict[str, Plugin]) -> bool: + def are_plugins_enabled(self, plugins_dict: dict[str, list[Plugin]]) -> bool: for k, plugins in plugins_dict.items(): for plugin in plugins: if not plugin.enabled: return False return True - def get_report_types_from_choice(self) -> list[type[Report]]: + def get_report_types_from_choice(self) -> list[type[Report] | type[MultiReport]]: report_types = [] for report_type in self.selected_report_types: try: @@ -154,7 +159,6 @@ def get_report_types_from_choice(self) -> list[type[Report]]: except ValueError: error_message = _("Report type '%s' does not exist.") % report_type messages.add_message(self.request, messages.ERROR, error_message) - pass return report_types def get_report_types(self) -> list[ReportType]: diff --git a/rocky/reports/views/generate_report.py b/rocky/reports/views/generate_report.py index 8d6bcdc6566..6079c6c5acc 100644 --- a/rocky/reports/views/generate_report.py +++ b/rocky/reports/views/generate_report.py @@ -1,3 +1,4 @@ +from collections.abc import Sequence from typing import Any from django.contrib import messages @@ -11,6 +12,7 @@ from octopoes.models import Reference from octopoes.models.exception import ObjectNotFoundException +from reports.report_types.definitions import Report from reports.report_types.helpers import ( get_ooi_types_with_report, get_plugins_for_report_ids, @@ -135,6 +137,7 @@ class GenerateReportView(BreadcrumbsGenerateReportView, BaseReportView, Template template_name = "generate_report.html" current_step = 6 + report_types: Sequence[type[Report]] def get(self, request, *args, **kwargs): if not self.are_plugins_enabled(self.plugins): @@ -142,8 +145,8 @@ def get(self, request, *args, **kwargs): messages.add_message(self.request, messages.WARNING, warning_message) return super().get(request, *args, **kwargs) - def generate_reports_for_oois(self) -> dict[str, dict[str, dict[str, str]]]: - report_data = {} + def generate_reports_for_oois(self) -> dict[str, dict[str, dict[str, Any]]]: + report_data: dict[str, dict[str, dict[str, Any]]] = {} error_oois = [] for ooi in self.selected_oois: report_data[ooi] = {} diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index d4111fa10bc..142dae82da6 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -88,7 +88,7 @@ def get(self, request, *args, **kwargs): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["oois"] = self.get_oois() - context["available_report_types"] = self.get_report_types_for_generate_report([MultiOrganizationReport]) + context["available_report_types"] = self.get_report_types_for_generate_report({MultiOrganizationReport}) return context diff --git a/rocky/rocky/admin.py b/rocky/rocky/admin.py deleted file mode 100644 index 14bf325d9a5..00000000000 --- a/rocky/rocky/admin.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.contrib import messages -from django.http import HttpResponseRedirect - -from rocky.exceptions import RockyError - - -class AdminErrorMessageMixin: - def add_view(self, request, *args, **kwargs): - try: - return super().add_view(request, *args, **kwargs) - except RockyError as e: - self.message_user(request, str(e), level=messages.ERROR) - return HttpResponseRedirect(request.get_full_path()) diff --git a/rocky/rocky/bytes_client.py b/rocky/rocky/bytes_client.py index 06352073f53..6714074059f 100644 --- a/rocky/rocky/bytes_client.py +++ b/rocky/rocky/bytes_client.py @@ -1,5 +1,6 @@ import logging import uuid +from collections.abc import Set from datetime import datetime, timezone import requests @@ -35,12 +36,11 @@ def raw_from_declarations(declarations: list[Declaration]): return json_string.encode("utf-8") - def add_manual_proof(self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_types: set[str] | None = None): + def add_manual_proof( + self, normalizer_id: uuid.UUID, raw: bytes, manual_mime_types: Set[str] = frozenset({"manual/ooi"}) + ): """Per convention for a generic normalizer, we add a raw list of declarations, not a single declaration""" - if manual_mime_types is None: - manual_mime_types = {"manual/ooi"} - self.login() boefje_meta = BoefjeMeta( @@ -96,18 +96,15 @@ def _save_normalizer_meta(self, normalizer_meta: NormalizerMeta) -> None: response.raise_for_status() - def _save_raw(self, boefje_meta_id: str, raw: bytes, mime_types: set[str] = None) -> str: - if not mime_types: - mime_types = set() - - headers = {"content-type": "application/octet-stream"} + def _save_raw(self, boefje_meta_id: uuid.UUID, raw: bytes, mime_types: Set[str] = frozenset()) -> str: + headers: dict[str, str | bytes] = {"content-type": "application/octet-stream"} headers.update(self.session.headers) response = self.session.post( f"{self.base_url}/bytes/raw", raw, headers=headers, - params={"mime_types": mime_types, "boefje_meta_id": boefje_meta_id}, + params={"mime_types": mime_types, "boefje_meta_id": str(boefje_meta_id)}, ) response.raise_for_status() @@ -121,10 +118,14 @@ def get_raw(self, raw_id: str) -> bytes: return response.content - def get_raw_metas(self, boefje_meta_id: str, organization_code: str) -> list: + def get_raw_metas(self, boefje_meta_id: uuid.UUID, organization_code: str) -> list: # More than 100 raw files per Boefje run is very unlikely at this stage, but eventually we can start paginating raw_files_limit = 100 - params = {"boefje_meta_id": boefje_meta_id, "limit": raw_files_limit, "organization": self.organization} + params: dict[str, str | int] = { + "boefje_meta_id": str(boefje_meta_id), + "limit": raw_files_limit, + "organization": str(self.organization), + } response = self.session.get(f"{self.base_url}/bytes/raw", params=params) response.raise_for_status() diff --git a/rocky/rocky/keiko.py b/rocky/rocky/keiko.py index 1950a110c50..e5ec4034625 100644 --- a/rocky/rocky/keiko.py +++ b/rocky/rocky/keiko.py @@ -298,7 +298,7 @@ def build_finding_dict( def build_meta(findings: list[dict]) -> dict: - meta = { + meta: dict[str, Any] = { "total": len(findings), "total_by_severity": { RiskLevelSeverity.CRITICAL.value: 0, diff --git a/rocky/rocky/scheduler.py b/rocky/rocky/scheduler.py index 6e8dadaa7f7..09867964d78 100644 --- a/rocky/rocky/scheduler.py +++ b/rocky/rocky/scheduler.py @@ -131,7 +131,7 @@ def __init__( ): self.scheduler_client = scheduler_client self.kwargs = kwargs - self._count = None + self._count: int | None = None @property def count(self) -> int: @@ -223,7 +223,7 @@ def get_lazy_task_list( boefje_name=boefje_name, ) - def get_task_details(self, organization_code: str, task_id: str) -> Task | None: + def get_task_details(self, organization_code: str, task_id: str) -> Task: res = self.session.get(f"{self._base_uri}/tasks/{task_id}") res.raise_for_status() task_details = Task.model_validate_json(res.content) diff --git a/rocky/rocky/templates/oois/ooi_detail_origins_inference.html b/rocky/rocky/templates/oois/ooi_detail_origins_inference.html index b3ab039ceb9..ff7dbd98f8e 100644 --- a/rocky/rocky/templates/oois/ooi_detail_origins_inference.html +++ b/rocky/rocky/templates/oois/ooi_detail_origins_inference.html @@ -14,14 +14,14 @@

    {% translate "Inferred by" %}

    - {% for inference in inferences %} + {% for inference, params in inference_origin_params %} + + {% endfor %} + +
    {% translate "All times in UTC, blocks of 1 hour." %}
    {{ inference.origin.method }} {{ inference.origin.source }} - {% for param in inference.params %} + {% for param in params %} {{ param.reference }}
    {% endfor %} diff --git a/rocky/rocky/views/finding_add.py b/rocky/rocky/views/finding_add.py index 6e623ad6ead..d374c0acbe5 100644 --- a/rocky/rocky/views/finding_add.py +++ b/rocky/rocky/views/finding_add.py @@ -124,7 +124,7 @@ def form_valid(self, form): return redirect(get_ooi_url("ooi_detail", ooi_id, self.organization.code)) - def get_ooi_options(self) -> list[dict[str, str]]: + def get_ooi_options(self) -> list[tuple[str, str]]: # Query to render form options ooi_set = set(OOI_TYPES.values()).difference({Finding, FindingType}) objects = self.octopoes_api_connector.list_objects(ooi_set).items diff --git a/rocky/rocky/views/finding_list.py b/rocky/rocky/views/finding_list.py index ca75dd8b888..6e9ee4e5dd6 100644 --- a/rocky/rocky/views/finding_list.py +++ b/rocky/rocky/views/finding_list.py @@ -1,4 +1,5 @@ import logging +from collections.abc import Iterable from typing import Any from django.urls.base import reverse_lazy @@ -27,7 +28,7 @@ def sort_by_severity_desc(findings) -> list[dict[str, Any]]: def generate_findings_metadata( findings: FindingList, - severity_filter: list[RiskLevelSeverity] | None = None, + severity_filter: Iterable[RiskLevelSeverity] | None = None, ) -> list[dict[str, Any]]: findings_meta = [] diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index 8cd99b07a70..1d42e712421 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -6,7 +6,7 @@ import requests.exceptions from account.mixins import OrganizationView from django.contrib import messages -from django.http import Http404 +from django.http import Http404, HttpRequest from django.urls import reverse from django.utils.translation import gettext_lazy as _ from katalogus.client import Boefje, get_katalogus @@ -54,6 +54,8 @@ class OOIAttributeError(AttributeError): class ObservedAtMixin: + request: HttpRequest + @cached_property def observed_at(self) -> datetime: observed_at = self.request.GET.get("observed_at", None) @@ -274,17 +276,14 @@ def __getitem__(self, key: int | slice) -> list[HydratedFinding]: class ConnectorFormMixin: - connector_form_class: type[ObservedAtForm] = None - connector_form_initial = {} + connector_form_class: type[ObservedAtForm] + request: HttpRequest def get_connector_form_kwargs(self) -> dict: - kwargs = { - "initial": self.connector_form_initial.copy(), - } - if "observed_at" in self.request.GET: - kwargs.update({"data": self.request.GET}) - return kwargs + return {"data": self.request.GET} + else: + return {} def get_connector_form(self) -> ObservedAtForm: return self.connector_form_class(**self.get_connector_form_kwargs()) @@ -347,7 +346,7 @@ def setup(self, request, *args, **kwargs): super().setup(request, *args, **kwargs) self.depth = self.get_depth() - def get_ooi(self, pk: str = None, observed_at: datetime | None = None) -> OOI: + def get_ooi(self, pk: str | None = None, observed_at: datetime | None = None) -> OOI: if pk is None: pk = self.get_ooi_id() @@ -362,6 +361,8 @@ def get_object_from_tree(self, pk: str, observed_at: datetime | None = None) -> class SeveritiesMixin: + request: HttpRequest + def get_severities(self) -> set[RiskLevelSeverity]: severities = set() for severity in self.request.GET.getlist("severity"): diff --git a/rocky/rocky/views/ooi_detail.py b/rocky/rocky/views/ooi_detail.py index 8d1b8127209..22db79a3113 100644 --- a/rocky/rocky/views/ooi_detail.py +++ b/rocky/rocky/views/ooi_detail.py @@ -172,12 +172,14 @@ def get_context_data(self, **kwargs): for inference_param in inference_params: inference_params_per_inference[inference_param.origin_id].append(inference_param) + inference_origin_params: list[tuple] = [] for inference in inferences: - inference.params = inference_params_per_inference.get(inference.origin.id, []) + inference_origin_params.append((inference, inference_params_per_inference[inference.origin.id])) context["declarations"] = declarations context["observations"] = observations context["inferences"] = inferences + context["inference_origin_params"] = inference_origin_params context["member"] = self.organization_member # TODO: generic solution to render ooi fields properly: https://github.com/minvws/nl-kat-coordination/issues/145 diff --git a/rocky/rocky/views/ooi_findings.py b/rocky/rocky/views/ooi_findings.py index 9f4fb941ae6..8d7b73dd2e9 100644 --- a/rocky/rocky/views/ooi_findings.py +++ b/rocky/rocky/views/ooi_findings.py @@ -15,7 +15,7 @@ def build_breadcrumbs(self) -> list[Breadcrumb]: breadcrumbs.append(self.get_last_breadcrumb()) return breadcrumbs - def get_last_breadcrumb(self): + def get_last_breadcrumb(self) -> Breadcrumb: return { "url": get_ooi_url("ooi_findings", self.ooi.primary_key, self.organization.code), "text": _("Object findings"), diff --git a/rocky/rocky/views/ooi_list.py b/rocky/rocky/views/ooi_list.py index 57bba733357..4488b2b3e6f 100644 --- a/rocky/rocky/views/ooi_list.py +++ b/rocky/rocky/views/ooi_list.py @@ -55,7 +55,7 @@ def get_context_data(self, **kwargs): return context - def get(self, request: HttpRequest, status=200, *args, **kwargs) -> HttpResponse: + def get(self, request: HttpRequest, *args, status=200, **kwargs) -> HttpResponse: """Override the response status in case submitting a form returns an error message""" response = super().get(request, *args, **kwargs) response.status_code = status @@ -76,7 +76,9 @@ def post(self, request: HttpRequest, *args, **kwargs) -> HttpResponse: if action == PageActions.UPDATE_SCAN_PROFILE.value: scan_profile = request.POST.get("scan-profile") - level = CUSTOM_SCAN_LEVEL[str(scan_profile).upper()] + # Mypy doesn't understand that CUSTOM_SCAN_LEVEL is an enum without + # the Django type hints + level = CUSTOM_SCAN_LEVEL[str(scan_profile).upper()] # type: ignore[misc, valid-type] if level.value == "inherit": return self._set_oois_to_inherit(selected_oois, request, *args, **kwargs) return self._set_scan_profiles(selected_oois, level, request, *args, **kwargs) diff --git a/rocky/rocky/views/ooi_report.py b/rocky/rocky/views/ooi_report.py index 4cc7fc2b991..e3fa966d1eb 100644 --- a/rocky/rocky/views/ooi_report.py +++ b/rocky/rocky/views/ooi_report.py @@ -154,18 +154,16 @@ def get(self, request, *args, **kwargs): # boefjes_required - Set of possible boefjes # boefjes_optional - Set of possible boefjes -# start_ooi - OOI that is the starting point of the report # allowed_oois - Set of OOIs that are interesting for this specific report # allowed_finding_types - Set of finding types that are interesting for this report class Report(OrganizationView): - boefjes_required: set = None # type: ignore - boefjes_optional: set = None # type: ignore - start_ooi: OOI = None # type: ignore - allowed_ooi_types: list[type[OOI]] = None # type: ignore - allowed_finding_types: list[str] = None # type: ignore - boefjes: list = [] + boefjes_required: set + boefjes_optional: set + allowed_ooi_types: list[type[OOI]] + allowed_finding_types: list[str] + boefjes: list @classmethod def get_finding_filter(cls): diff --git a/rocky/rocky/views/ooi_tree.py b/rocky/rocky/views/ooi_tree.py index be01336b74c..032abe8aa44 100644 --- a/rocky/rocky/views/ooi_tree.py +++ b/rocky/rocky/views/ooi_tree.py @@ -18,16 +18,11 @@ def get_filtered_tree(self, tree_dict): return filter_ooi_tree(tree_dict, filtered_types) def get_connector_form_kwargs(self): - tree_dict = self.get_tree_dict() + kwargs = super().get_connector_form_kwargs() + tree_dict = self.get_tree_dict() ooi_types = get_ooi_types_from_tree(tree_dict, True) - - kwargs = { - "ooi_types": ooi_types, - } - - if "observed_at" in self.request.GET: - kwargs.update({"data": self.request.GET}) + kwargs.update({"ooi_types": ooi_types}) return kwargs diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index 32fefab11cc..cd24cb66356 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -1,7 +1,7 @@ from time import sleep from typing import Any -from django import http +from django import forms, http from django.shortcuts import redirect from django.urls import reverse from django.utils.translation import gettext_lazy as _ @@ -119,6 +119,7 @@ def get_context_data(self, **kwargs): return context def build_breadcrumbs(self) -> list[Breadcrumb]: + start: Breadcrumb if isinstance(self.ooi, Finding): start = { "url": reverse("finding_list", kwargs={"organization_code": self.organization.code}), @@ -139,8 +140,8 @@ def build_breadcrumbs(self) -> list[Breadcrumb]: class BaseOOIFormView(SingleOOIMixin, FormView): - ooi_class: type[OOI] = None - form_class = OOIForm + ooi_class: type[OOI] + form_class: forms.Form = OOIForm def get_ooi_class(self): return self.ooi.__class__ if hasattr(self, "ooi") else None diff --git a/rocky/rocky/views/organization_member_add.py b/rocky/rocky/views/organization_member_add.py index 82273c7eb4b..f4af5b320ef 100644 --- a/rocky/rocky/views/organization_member_add.py +++ b/rocky/rocky/views/organization_member_add.py @@ -44,7 +44,7 @@ class OrganizationMemberAddAccountTypeView( - OrganizationPermissionRequiredMixin, OrganizationMemberBreadcrumbsMixin, FormView + OrganizationPermissionRequiredMixin, OrganizationMemberBreadcrumbsMixin, OrganizationView, FormView ): """ View to create a new member starting with choosing the account type. @@ -79,7 +79,9 @@ def build_breadcrumbs(self): return breadcrumbs -class OrganizationMemberAddView(OrganizationPermissionRequiredMixin, OrganizationMemberBreadcrumbsMixin, FormView): +class OrganizationMemberAddView( + OrganizationPermissionRequiredMixin, OrganizationMemberBreadcrumbsMixin, OrganizationView, FormView +): """ View to create a new member. """ diff --git a/rocky/rocky/views/organization_member_list.py b/rocky/rocky/views/organization_member_list.py index 7be58972ce8..12d604d2eda 100644 --- a/rocky/rocky/views/organization_member_list.py +++ b/rocky/rocky/views/organization_member_list.py @@ -1,6 +1,6 @@ from enum import Enum -from account.mixins import OrganizationPermissionRequiredMixin +from account.mixins import OrganizationPermissionRequiredMixin, OrganizationView from django.contrib import messages from django.core.exceptions import PermissionDenied from django.db import models @@ -26,6 +26,7 @@ class PageActions(Enum): class OrganizationMemberListView( OrganizationPermissionRequiredMixin, OrganizationMemberBreadcrumbsMixin, + OrganizationView, ListView, ): model = OrganizationMember diff --git a/rocky/rocky/views/organization_settings.py b/rocky/rocky/views/organization_settings.py index 5386fcdee14..838c07f500a 100644 --- a/rocky/rocky/views/organization_settings.py +++ b/rocky/rocky/views/organization_settings.py @@ -1,7 +1,7 @@ from datetime import datetime from enum import Enum -from account.mixins import OrganizationPermissionRequiredMixin +from account.mixins import OrganizationPermissionRequiredMixin, OrganizationView from django.contrib import messages from django.core.exceptions import PermissionDenied from django.http import HttpRequest, HttpResponse, HttpResponseBadRequest @@ -14,7 +14,9 @@ class PageActions(Enum): RECALCULATE = "recalculate" -class OrganizationSettingsView(OrganizationPermissionRequiredMixin, OrganizationDetailBreadcrumbsMixin, TemplateView): +class OrganizationSettingsView( + OrganizationPermissionRequiredMixin, OrganizationDetailBreadcrumbsMixin, OrganizationView, TemplateView +): template_name = "organizations/organization_settings.html" permission_required = "tools.view_organization" diff --git a/rocky/rocky/views/scans.py b/rocky/rocky/views/scans.py index b94d5e2e893..103fcf360af 100644 --- a/rocky/rocky/views/scans.py +++ b/rocky/rocky/views/scans.py @@ -1,5 +1,6 @@ from logging import getLogger +from account.mixins import OrganizationView from django.views.generic import TemplateView from katalogus.client import get_katalogus from tools.view_helpers import Breadcrumb, ObjectsBreadcrumbsMixin @@ -7,7 +8,7 @@ logger = getLogger(__name__) -class ScanListView(ObjectsBreadcrumbsMixin, TemplateView): +class ScanListView(ObjectsBreadcrumbsMixin, OrganizationView, TemplateView): template_name = "scan.html" def build_breadcrumbs(self) -> list[Breadcrumb]: diff --git a/rocky/rocky/views/upload_csv.py b/rocky/rocky/views/upload_csv.py index 7fc4b930f90..f2056b6aa3d 100644 --- a/rocky/rocky/views/upload_csv.py +++ b/rocky/rocky/views/upload_csv.py @@ -79,7 +79,7 @@ def get_context_data(self, **kwargs): context["criteria"] = CSV_CRITERIA return context - def get_or_create_reference(self, ooi_type_name: str, value: str): + def get_or_create_reference(self, ooi_type_name: str, value: str | None): ooi_type_name = next(filter(lambda x: x.casefold() == ooi_type_name.casefold(), self.ooi_types.keys())) # get from cache diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 4361dc1c67f..68ebc8336e8 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -673,15 +673,15 @@ def get_stub_path(file_name: str) -> Path: return Path(__file__).parent / "stubs" / file_name -def get_boefjes_data() -> dict: +def get_boefjes_data() -> list[dict]: return json.loads(get_stub_path("katalogus_boefjes.json").read_text()) -def get_normalizers_data() -> dict: +def get_normalizers_data() -> list[dict]: return json.loads(get_stub_path("katalogus_normalizers.json").read_text()) -def get_plugins_data() -> dict: +def get_plugins_data() -> list[dict]: return get_boefjes_data() + get_normalizers_data() diff --git a/rocky/tests/integration/test_reports.py b/rocky/tests/integration/test_reports.py index 0927f01b202..0d5741e12dc 100644 --- a/rocky/tests/integration/test_reports.py +++ b/rocky/tests/integration/test_reports.py @@ -1,6 +1,7 @@ from dataclasses import asdict from reports.report_types.aggregate_organisation_report.report import AggregateOrganisationReport, aggregate_reports +from reports.report_types.definitions import MultiReport, Report from reports.report_types.multi_organization_report.report import MultiOrganizationReport, collect_report_data from reports.report_types.systems_report.report import SystemReport, SystemType from reports.report_types.web_system_report.report import WebSystemReport @@ -95,7 +96,9 @@ def test_system_report(octopoes_api_connector: OctopoesAPIConnector, valid_time) def test_aggregate_report(octopoes_api_connector: OctopoesAPIConnector, valid_time, hostname_oois): seed_system(octopoes_api_connector, valid_time) - reports = AggregateOrganisationReport.reports["required"] + AggregateOrganisationReport.reports["optional"] + reports: list[type[Report] | type[MultiReport]] = ( + AggregateOrganisationReport.reports["required"] + AggregateOrganisationReport.reports["optional"] + ) report_ids = [report_type.id for report_type in reports] _, data, _, _ = aggregate_reports(octopoes_api_connector, hostname_oois, report_ids, valid_time) @@ -243,13 +246,13 @@ def test_multi_report( _, data, report_data, _ = aggregate_reports(octopoes_api_connector, hostname_oois, report_ids, valid_time) _, data_2, report_data_2, _ = aggregate_reports(octopoes_api_connector_2, hostname_oois, report_ids, valid_time) - report_data = ReportData( + report_data_object = ReportData( organization_code=octopoes_api_connector.client, organization_name="Test name", organization_tags=["test1"], data={"post_processed_data": data, "report_data": report_data}, ) - report_data_2 = ReportData( + report_data_object_2 = ReportData( organization_code=octopoes_api_connector_2.client, organization_name="Name2", organization_tags=["test1", "test2", "test3"], @@ -257,12 +260,12 @@ def test_multi_report( ) # Save second organization info in the first organization - octopoes_api_connector.save_declaration(Declaration(ooi=report_data, valid_time=valid_time)) - octopoes_api_connector.save_declaration(Declaration(ooi=report_data_2, valid_time=valid_time)) + octopoes_api_connector.save_declaration(Declaration(ooi=report_data_object, valid_time=valid_time)) + octopoes_api_connector.save_declaration(Declaration(ooi=report_data_object_2, valid_time=valid_time)) multi_report = MultiOrganizationReport(octopoes_api_connector) multi_report_data = collect_report_data( - octopoes_api_connector, [str(report_data.reference), str(report_data_2.reference)] + octopoes_api_connector, [str(report_data_object.reference), str(report_data_object_2.reference)] ) multi_data = multi_report.post_process_data(multi_report_data) assert multi_data["organizations"] == [octopoes_api_connector.client, octopoes_api_connector_2.client] diff --git a/rocky/tools/add_ooi_information.py b/rocky/tools/add_ooi_information.py index 5459d022923..09e871fc49f 100644 --- a/rocky/tools/add_ooi_information.py +++ b/rocky/tools/add_ooi_information.py @@ -79,7 +79,7 @@ def service_info(value) -> tuple[str, str]: # from: https://newbedev.com/how-to-parse-table-with-rowspan-and-colspan def table_to_2d(table_tag): - rowspans = [] # track pending rowspans + rowspans_list: list = [] # track pending rowspans rows = table_tag.find_all("tr") # first scan, see how many column_names we need @@ -95,11 +95,11 @@ def table_to_2d(table_tag): # to the last cell; ignore it elsewhere. colcount = max( colcount, - sum(int(c.get("colspan", 1)) or 1 for c in cells[:-1]) + len(cells[-1:]) + len(rowspans), + sum(int(c.get("colspan", 1)) or 1 for c in cells[:-1]) + len(cells[-1:]) + len(rowspans_list), ) # update rowspan bookkeeping; 0 is a span to the bottom. - rowspans += [int(c.get("rowspan", 1)) or len(rows) - r for c in cells] - rowspans = [s - 1 for s in rowspans if s > 1] + rowspans_list += [int(c.get("rowspan", 1)) or len(rows) - r for c in cells] + rowspans_list = [s - 1 for s in rowspans_list if s > 1] # it doesn't matter if there are still rowspan numbers 'active'; no extra # rows to show in the table means the larger than 1 rowspan numbers in the @@ -109,7 +109,7 @@ def table_to_2d(table_tag): table = [[None] * colcount for row in rows] # fill matrix from row data - rowspans = {} # track pending rowspans, column number mapping to count + rowspans: dict = {} # track pending rowspans, column number mapping to count for row, row_elem in enumerate(rows): span_offset = 0 # how many column_names are skipped due to row and colspans for col, cell in enumerate(row_elem.find_all(["td", "th"], recursive=False)): @@ -141,7 +141,7 @@ def table_to_2d(table_tag): def _map_usage_value(value: str) -> bool: value = value.lower().strip() - return value is not None and value and value != "no" + return bool(value and value != "no") def wiki_port_tables() -> list[_PortInfo]: diff --git a/rocky/tools/admin.py b/rocky/tools/admin.py index df89c17c9af..b3e9731bbb6 100644 --- a/rocky/tools/admin.py +++ b/rocky/tools/admin.py @@ -2,11 +2,12 @@ from json import JSONDecodeError import tagulous.admin -from django.contrib import admin +from django.contrib import admin, messages from django.db.models import JSONField from django.forms import widgets +from django.http import HttpResponseRedirect -from rocky.admin import AdminErrorMessageMixin +from rocky.exceptions import RockyError from tools.models import Indemnification, OOIInformation, Organization, OrganizationMember, OrganizationTag @@ -44,9 +45,16 @@ def get_readonly_fields(self, request, obj=None): return self.readonly_fields -class OrganizationAdmin(AdminErrorMessageMixin, admin.ModelAdmin): +class OrganizationAdmin(admin.ModelAdmin): list_display = ["name", "code", "tags"] + def add_view(self, request, *args, **kwargs): + try: + return super().add_view(request, *args, **kwargs) + except RockyError as e: + self.message_user(request, str(e), level=messages.ERROR) + return HttpResponseRedirect(request.get_full_path()) + def get_readonly_fields(self, request, obj=None): # Obj is None when adding an organization and in that case we don't make # code read only so it is possible to specify the code when creating an diff --git a/rocky/tools/forms/base.py b/rocky/tools/forms/base.py index d50f8ebe23f..3144eee7fc4 100644 --- a/rocky/tools/forms/base.py +++ b/rocky/tools/forms/base.py @@ -96,25 +96,20 @@ class CheckboxGroup(forms.CheckboxSelectMultiple): input_type = "checkbox" template_name = "forms/widgets/checkbox_group_columns.html" option_template_name = "forms/widgets/checkbox_option.html" - required_options: list[str] = None - toggle_all_button = None + required_options: list[str] wrap_label = True def __init__( self, required_options: list[str] | None = None, - toggle_all_button: bool | None = None, *args, **kwargs, ) -> None: super().__init__(*args, **kwargs) - if toggle_all_button is not None: - self.toggle_all_button = toggle_all_button self.required_options = required_options or [] def get_context(self, name, value, attrs) -> dict[str, Any]: context = super().get_context(name, value, attrs) - context["toggle_all_button"] = self.toggle_all_button return context def create_option(self, *arg, **kwargs) -> dict[str, Any]: diff --git a/rocky/tools/forms/finding_type.py b/rocky/tools/forms/finding_type.py index b619d9fec76..ea40f57e931 100644 --- a/rocky/tools/forms/finding_type.py +++ b/rocky/tools/forms/finding_type.py @@ -140,16 +140,13 @@ class FindingAddForm(BaseRockyForm): def __init__( self, connector: OctopoesAPIConnector, - ooi_list: list[dict[str, str]], + ooi_list: list[tuple[str, str]], *args, **kwargs, ): self.octopoes_connector = connector super().__init__(*args, **kwargs) - self.set_choices_for_field("ooi_id", ooi_list) - - def set_choices_for_field(self, field, choices: list[dict[str, str]]): - self.fields[field].widget.choices = choices + self.set_choices_for_widget("ooi_id", ooi_list) def clean_date(self): data = self.cleaned_data["date"] diff --git a/rocky/tools/forms/ooi.py b/rocky/tools/forms/ooi.py index 1fdf54e8e57..ed14e4958a2 100644 --- a/rocky/tools/forms/ooi.py +++ b/rocky/tools/forms/ooi.py @@ -64,7 +64,7 @@ def __init__( self, oois: list[OOI], organization_code: str, - mandatory_fields: list = None, + mandatory_fields: list | None = None, *args, **kwargs, ): diff --git a/rocky/tools/forms/ooi_form.py b/rocky/tools/forms/ooi_form.py index c48d7f7447b..f4831fe4ca9 100644 --- a/rocky/tools/forms/ooi_form.py +++ b/rocky/tools/forms/ooi_form.py @@ -1,7 +1,7 @@ from enum import Enum from inspect import isclass from ipaddress import IPv4Address, IPv6Address -from typing import Literal, Union, cast, get_args, get_origin +from typing import Literal, Union, get_args, get_origin from django import forms from django.utils.translation import gettext_lazy as _ @@ -36,7 +36,7 @@ def get_fields(self) -> dict[str, forms.fields.Field]: def generate_form_fields( self, - hidden_ooi_fields: dict[str, str] = None, + hidden_ooi_fields: dict[str, str] | None = None, ) -> dict[str, forms.fields.Field]: fields = {} for name, field in self.ooi_class.model_fields.items(): @@ -68,7 +68,7 @@ def generate_form_fields( elif annotation == int or (hasattr(annotation, "__args__") and int in annotation.__args__): fields[name] = forms.IntegerField(**default_attrs) elif isclass(annotation) and issubclass(annotation, Enum): - fields[name] = generate_select_ooi_type(name, cast(Enum, annotation), field) + fields[name] = generate_select_ooi_type(name, annotation, field) elif self.ooi_class == Question and issubclass(annotation, str) and name == "json_schema": fields[name] = forms.CharField(**default_attrs) elif isclass(annotation) and issubclass(annotation, str) or optional_type is str: @@ -115,7 +115,7 @@ def generate_select_ooi_field( return forms.CharField(widget=forms.Select(choices=select_options), **default_attrs) -def generate_select_ooi_type(name: str, enumeration: Enum, field: FieldInfo) -> forms.fields.Field: +def generate_select_ooi_type(name: str, enumeration: type[Enum], field: FieldInfo) -> forms.fields.Field: """OOI Type (enum) fields will have a select input""" default_attrs = default_field_options(name, field) choices = [(entry.value, entry.name) for entry in list(enumeration)] diff --git a/rocky/tools/management/commands/export_migrations.py b/rocky/tools/management/commands/export_migrations.py index d0fe292a23b..0fc4711db67 100644 --- a/rocky/tools/management/commands/export_migrations.py +++ b/rocky/tools/management/commands/export_migrations.py @@ -45,8 +45,6 @@ def handle(self, **options) -> None: ) for migration in migrations_to_export: - migration: MigrationRecorder.Migration - logger.info("Exporting %s", migration.id) # Generate SQL diff --git a/rocky/tools/management/commands/generate_report.py b/rocky/tools/management/commands/generate_report.py index 9442094cff9..8782885979b 100644 --- a/rocky/tools/management/commands/generate_report.py +++ b/rocky/tools/management/commands/generate_report.py @@ -94,3 +94,5 @@ def get_organization(**options) -> Organization | None: if options["id"]: return Organization.objects.get(pk=options["id"]) + + return None diff --git a/rocky/tools/management/commands/setup_dev_account.py b/rocky/tools/management/commands/setup_dev_account.py index e8096bacbe3..d3c6c4fcedf 100644 --- a/rocky/tools/management/commands/setup_dev_account.py +++ b/rocky/tools/management/commands/setup_dev_account.py @@ -19,14 +19,15 @@ class Command(BaseCommand): def get_permissions(self, codenames): permission_objects = [] - permission = None if codenames: for codename in codenames: try: permission = Permission.objects.get(codename=codename) + except Permission.DoesNotExist: + raise ObjectDoesNotExist("Permission:" + codename + " does not exist.") + else: permission_objects.append(permission.id) - except permission.DoesNotExist: - raise ObjectDoesNotExist("Permission:" + str(permission) + " does not exist.") + return permission_objects def setup_kat_groups(self): diff --git a/rocky/tools/management/commands/setup_test_users.py b/rocky/tools/management/commands/setup_test_users.py index 27ddd37c226..bc5cf231e34 100644 --- a/rocky/tools/management/commands/setup_test_users.py +++ b/rocky/tools/management/commands/setup_test_users.py @@ -26,7 +26,7 @@ def handle(self, **options): def add_superuser(email: str, password: str): - user_kwargs = { + user_kwargs: dict[str, str | bool] = { "email": email, "password": password, "full_name": "End-to-end Superuser", @@ -38,7 +38,7 @@ def add_superuser(email: str, password: str): def add_test_user(email: str, password: str, group_name: str | None = None): - user_kwargs = { + user_kwargs: dict[str, str | bool] = { "email": email, "password": password, "full_name": "End-to-end user", @@ -47,7 +47,7 @@ def add_test_user(email: str, password: str, group_name: str | None = None): add_user(user_kwargs, group_name) -def add_user(user_kwargs: dict[str, str], group_name: str | None = None): +def add_user(user_kwargs: dict[str, str | bool], group_name: str | None = None): """ Creates a test user with the given user_kwargs. User is optionally added to group group_name. diff --git a/rocky/tools/migrations/0031_merge_20230301_2012.py b/rocky/tools/migrations/0031_merge_20230301_2012.py index ecfb26b0234..124d44f49df 100644 --- a/rocky/tools/migrations/0031_merge_20230301_2012.py +++ b/rocky/tools/migrations/0031_merge_20230301_2012.py @@ -9,4 +9,4 @@ class Migration(migrations.Migration): ("tools", "0030_auto_20230227_1458"), ] - operations = [] + operations: list = [] diff --git a/rocky/tools/migrations/0036_merge_20230504_1629.py b/rocky/tools/migrations/0036_merge_20230504_1629.py index ef3aca3a898..8fd69a1a278 100644 --- a/rocky/tools/migrations/0036_merge_20230504_1629.py +++ b/rocky/tools/migrations/0036_merge_20230504_1629.py @@ -9,4 +9,4 @@ class Migration(migrations.Migration): ("tools", "0035_update_perms_move_and_clear_groups"), ] - operations = [] + operations: list = [] diff --git a/rocky/tools/migrations/0039_merge_0038_alter_organization_options_0038_delete_job.py b/rocky/tools/migrations/0039_merge_0038_alter_organization_options_0038_delete_job.py index 307c359cb04..86a01418cdd 100644 --- a/rocky/tools/migrations/0039_merge_0038_alter_organization_options_0038_delete_job.py +++ b/rocky/tools/migrations/0039_merge_0038_alter_organization_options_0038_delete_job.py @@ -9,4 +9,4 @@ class Migration(migrations.Migration): ("tools", "0038_delete_job"), ] - operations = [] + operations: list = [] diff --git a/rocky/tools/migrations/0041_merge_20230731_1131.py b/rocky/tools/migrations/0041_merge_20230731_1131.py index 822315e611e..d0da43cb26f 100644 --- a/rocky/tools/migrations/0041_merge_20230731_1131.py +++ b/rocky/tools/migrations/0041_merge_20230731_1131.py @@ -9,4 +9,4 @@ class Migration(migrations.Migration): ("tools", "0040_update_admin_permission"), ] - operations = [] + operations: list = [] diff --git a/rocky/tools/models.py b/rocky/tools/models.py index 1dbf3e13e7c..56cb9b62555 100644 --- a/rocky/tools/models.py +++ b/rocky/tools/models.py @@ -1,7 +1,9 @@ import datetime import logging from collections.abc import Iterable +from enum import Enum from functools import cached_property +from typing import cast import tagulous.models from django.conf import settings @@ -13,21 +15,13 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from katalogus.client import KATalogusClientV1, get_katalogus -from katalogus.exceptions import ( - KATalogusDownException, - KATalogusException, - KATalogusUnhealthyException, -) +from katalogus.exceptions import KATalogusDownException, KATalogusException, KATalogusUnhealthyException from requests import RequestException from octopoes.api.models import Declaration from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models.ooi.web import Network -from rocky.exceptions import ( - OctopoesDownException, - OctopoesException, - OctopoesUnhealthyException, -) +from rocky.exceptions import OctopoesDownException, OctopoesException, OctopoesUnhealthyException from tools.add_ooi_information import SEPARATOR, get_info from tools.enums import SCAN_LEVEL from tools.fields import LowerCaseSlugField @@ -131,8 +125,8 @@ def delete(self, *args, **kwargs): except Exception as e: try: octopoes_client.create_node() - except Exception as e: - raise OctopoesException("Failed creating organization in Octopoes") from e + except Exception as second_exception: + raise OctopoesException("Failed creating organization in Octopoes") from second_exception raise KATalogusException("Failed deleting organization in the Katalogus") from e @@ -166,8 +160,8 @@ def pre_create(cls, sender, instance, *args, **kwargs): except Exception as e: try: katalogus_client.delete_organization() - except Exception as e: - raise KATalogusException("Failed deleting organization in the Katalogus") from e + except Exception as second_exception: + raise KATalogusException("Failed deleting organization in the Katalogus") from second_exception raise OctopoesException("Failed creating organization in Octopoes") from e @@ -221,7 +215,7 @@ class STATUSES(models.TextChoices): ACTIVE = "active", _("active") NEW = "new", _("new") - scan_levels = [scan_level.value for scan_level in SCAN_LEVEL] + scan_levels = [scan_level.value for scan_level in cast(type[Enum], SCAN_LEVEL)] user = models.ForeignKey("account.KATUser", on_delete=models.PROTECT, related_name="members") organization = models.ForeignKey(Organization, on_delete=models.CASCADE, related_name="members") diff --git a/rocky/tools/ooi_helpers.py b/rocky/tools/ooi_helpers.py index e8b86c049d8..9c47689438c 100644 --- a/rocky/tools/ooi_helpers.py +++ b/rocky/tools/ooi_helpers.py @@ -104,7 +104,7 @@ def get_ooi_dict(ooi: OOI) -> dict: def get_tree_meta(tree_node: dict, depth: int, location: str) -> dict: - tree_meta = { + tree_meta: dict[str, Any] = { "depth": depth, "location": location, "child_count": "0", # TO_DO ? child_count doesn't exist in template if not a string @@ -237,7 +237,7 @@ def get_finding_type_from_finding(finding: Finding) -> FindingType: def get_or_create_ooi( - api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime = None + api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime | None = None ) -> tuple[OOI, bool | datetime]: _now = datetime.now(timezone.utc) if observed_at is None: @@ -255,7 +255,7 @@ def get_or_create_ooi( def create_ooi( - api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime = None + api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime | None = None ) -> None: if observed_at is None: observed_at = datetime.now(timezone.utc) diff --git a/rocky/tools/view_helpers.py b/rocky/tools/view_helpers.py index bbb90c3caad..741c59c868a 100644 --- a/rocky/tools/view_helpers.py +++ b/rocky/tools/view_helpers.py @@ -3,18 +3,14 @@ from typing import TypedDict from urllib.parse import urlencode, urlparse, urlunparse -from account.mixins import OrganizationView from django.contrib import messages from django.http import HttpRequest from django.urls.base import reverse, reverse_lazy from django.utils.translation import gettext_lazy as _ from octopoes.models.types import OOI_TYPES -from rocky.scheduler import ( - PrioritizedItem, - SchedulerError, - client, -) +from rocky.scheduler import PrioritizedItem, SchedulerError, client +from tools.models import Organization def convert_date_to_datetime(d: date) -> datetime: @@ -22,7 +18,7 @@ def convert_date_to_datetime(d: date) -> datetime: return datetime.combine(d, datetime.max.time(), tzinfo=timezone.utc) -def get_mandatory_fields(request, params: list[str] = None): +def get_mandatory_fields(request, params: list[str] | None = None): mandatory_fields = [] if not params: @@ -91,7 +87,8 @@ def build_breadcrumbs(self) -> list[Breadcrumb]: return self.breadcrumbs.copy() def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) + # Mypy doesn't understand the way mixins are used + context = super().get_context_data(**kwargs) # type: ignore[misc] context["breadcrumbs"] = self.build_breadcrumbs() return context @@ -102,8 +99,9 @@ class Step(TypedDict): class StepsMixin: + request: HttpRequest steps: list[Step] = [] - current_step: int = None + current_step: int | None = None def get_current_step(self): if self.current_step is None: @@ -117,7 +115,8 @@ def build_steps(self) -> list[Step]: return self.steps.copy() def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) + # Mypy doesn't understand the way mixins are used + context = super().get_context_data(**kwargs) # type: ignore[misc] context["steps"] = self.build_steps() context["current_step"] = self.get_current_step() @@ -128,7 +127,9 @@ class OrganizationBreadcrumbsMixin(BreadcrumbsMixin): breadcrumbs = [{"url": reverse_lazy("organization_list"), "text": _("Organizations")}] -class OrganizationDetailBreadcrumbsMixin(BreadcrumbsMixin, OrganizationView): +class OrganizationDetailBreadcrumbsMixin(BreadcrumbsMixin): + organization: Organization + def build_breadcrumbs(self): breadcrumbs = [ { @@ -140,7 +141,9 @@ def build_breadcrumbs(self): return breadcrumbs -class OrganizationMemberBreadcrumbsMixin(BreadcrumbsMixin, OrganizationView): +class OrganizationMemberBreadcrumbsMixin(BreadcrumbsMixin): + organization: Organization + def build_breadcrumbs(self): breadcrumbs = [ { @@ -152,7 +155,9 @@ def build_breadcrumbs(self): return breadcrumbs -class ObjectsBreadcrumbsMixin(BreadcrumbsMixin, OrganizationView): +class ObjectsBreadcrumbsMixin(BreadcrumbsMixin): + organization: Organization + def build_breadcrumbs(self): return [ { diff --git a/rocky/whitelist.py b/rocky/whitelist.py index 65a4aec92c7..7c54468e0ad 100644 --- a/rocky/whitelist.py +++ b/rocky/whitelist.py @@ -1 +1,2 @@ +# mypy: ignore-errors sender # unused variable (tools/models.py:90) From bead3ebd17297f05a38a753eb25184be92077515 Mon Sep 17 00:00:00 2001 From: originalsouth Date: Mon, 19 Feb 2024 18:25:44 +0100 Subject: [PATCH 56/85] Fix/1963 nxdomain keeps findings in kat (#2310) Co-authored-by: Donny Peeters Co-authored-by: Jan Klopper Co-authored-by: Donny Peeters <46660228+Donnype@users.noreply.github.com> Co-authored-by: ammar92 Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> --- boefjes/boefjes/job_handler.py | 24 +- boefjes/boefjes/job_models.py | 14 +- boefjes/boefjes/local.py | 2 + .../kat_adr_finding_types/normalize.py | 15 +- .../kat_cve_finding_types/normalize.py | 17 +- .../kat_cwe_finding_types/normalize.py | 17 +- .../kat_kat_finding_types/normalize.py | 21 +- .../boefjes/plugins/kat_nmap_tcp/normalize.py | 1 - .../kat_retirejs_finding_types/normalize.py | 15 +- .../kat_snyk_finding_types/normalize.py | 17 +- boefjes/tests/test_cve_finding_types.py | 65 +-- boefjes/tests/test_nmap.py | 2 +- octopoes/octopoes/api/models.py | 20 +- octopoes/octopoes/api/router.py | 20 +- octopoes/octopoes/connector/octopoes.py | 5 +- octopoes/octopoes/core/service.py | 5 +- octopoes/octopoes/models/__init__.py | 2 - octopoes/octopoes/models/origin.py | 1 + octopoes/tests/conftest.py | 69 ++- .../tests/integration/test_ooi_deletion.py | 431 ++++++++++++++++++ 20 files changed, 677 insertions(+), 86 deletions(-) create mode 100644 octopoes/tests/integration/test_ooi_deletion.py diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 10b97b46e52..1bc018bef5b 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -22,7 +22,7 @@ from boefjes.katalogus.local_repository import LocalPluginRepository from boefjes.plugins.models import _default_mime_types from boefjes.runtime_interfaces import BoefjeJobRunner, Handler, NormalizerJobRunner -from octopoes.api.models import Declaration, Observation +from octopoes.api.models import Affirmation, Declaration, Observation from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import OOI, Reference, ScanProfile from octopoes.models.exception import ObjectNotFoundException @@ -210,7 +210,15 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: results = self.job_runner.run(normalizer_meta, raw) connector = self.octopoes_factory(normalizer_meta.raw_data.boefje_meta.organization) + logger.info("Obtained results %s", str(results)) + for observation in results.observations: + parsed_oois = [self._parse_ooi(result) for result in observation.results] + for parsed_ooi in parsed_oois: + if parsed_ooi.primary_key == observation.input_ooi: + logger.warning( + 'Normalizer "%s" returned input [%s]', normalizer_meta.normalizer.id, observation.input_ooi + ) reference = Reference.from_str(observation.input_ooi) connector.save_observation( Observation( @@ -218,7 +226,9 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: source=reference, task_id=normalizer_meta.id, valid_time=normalizer_meta.raw_data.boefje_meta.ended_at, - result=[self._parse_ooi(result) for result in observation.results], + result=[ + parsed_ooi for parsed_ooi in parsed_oois if parsed_ooi.primary_key != observation.input_ooi + ], ) ) @@ -232,6 +242,16 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: ) ) + for affirmation in results.affirmations: + connector.save_affirmation( + Affirmation( + method=normalizer_meta.normalizer.id, + ooi=self._parse_ooi(affirmation.ooi), + task_id=normalizer_meta.id, + valid_time=normalizer_meta.raw_data.boefje_meta.ended_at, + ) + ) + corrected_scan_profiles = [] for profile in results.scan_profiles: profile.level = min(profile.level, self.whitelist.get(normalizer_meta.normalizer.id, profile.level)) diff --git a/boefjes/boefjes/job_models.py b/boefjes/boefjes/job_models.py index 92bc388198f..8a6d8141955 100644 --- a/boefjes/boefjes/job_models.py +++ b/boefjes/boefjes/job_models.py @@ -95,16 +95,28 @@ class NormalizerDeclaration(BaseModel): ooi: NormalizerPlainOOI +class NormalizerAffirmation(BaseModel): + type: Literal["affirmation"] = "affirmation" + ooi: NormalizerPlainOOI + + class NormalizerScanProfile(BaseModel): scan_profile_type: str model_config = ConfigDict(populate_by_name=True, extra="allow") class NormalizerResult(BaseModel): # Moves all validation logic to Pydantic - item: NormalizerPlainOOI | NormalizerObservation | NormalizerDeclaration | NormalizerScanProfile + item: ( + NormalizerPlainOOI + | NormalizerObservation + | NormalizerDeclaration + | NormalizerAffirmation + | NormalizerScanProfile + ) class NormalizerOutput(BaseModel): observations: list[NormalizerObservation] = [] declarations: list[NormalizerDeclaration] = [] + affirmations: list[NormalizerAffirmation] = [] scan_profiles: list[NormalizerScanProfile] = [] diff --git a/boefjes/boefjes/local.py b/boefjes/boefjes/local.py index 34fe9e88c01..8129076d995 100644 --- a/boefjes/boefjes/local.py +++ b/boefjes/boefjes/local.py @@ -7,6 +7,7 @@ from boefjes.job_models import ( BoefjeMeta, InvalidReturnValueNormalizer, + NormalizerAffirmation, NormalizerDeclaration, NormalizerMeta, NormalizerObservation, @@ -100,6 +101,7 @@ def _parse_results(self, normalizer_meta: NormalizerMeta, results: list[Any]) -> return NormalizerOutput( observations=observations, declarations=[result.item for result in parsed if isinstance(result.item, NormalizerDeclaration)], + affirmations=[result.item for result in parsed if isinstance(result.item, NormalizerAffirmation)], scan_profiles=[result.item for result in parsed if isinstance(result.item, NormalizerScanProfile)], ) diff --git a/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py index 2b78f1796c8..2d006fec144 100644 --- a/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_adr_finding_types/normalize.py @@ -28,9 +28,12 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_score = SEVERITY_SCORE_LOOKUP[risk_severity] - yield ADRFindingType( - id=adr_finding_type_id, - description=finding_type_information["description"], - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": ADRFindingType( + id=adr_finding_type_id, + description=finding_type_information["description"], + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py index b2f6879c1f8..8fc6c5d9d26 100644 --- a/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_cve_finding_types/normalize.py @@ -52,10 +52,13 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_score = cvss[0]["cvssData"]["baseScore"] risk_severity = get_risk_level(risk_score) - yield CVEFindingType( - id=cve_finding_type_id, - description=english_description["value"], - source=f"https://cve.circl.lu/cve/{cve_finding_type_id}", - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": CVEFindingType( + id=cve_finding_type_id, + description=english_description["value"], + source=f"https://cve.circl.lu/cve/{cve_finding_type_id}", + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py index cc93fad8748..e5b5f7b109c 100644 --- a/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_cwe_finding_types/normalize.py @@ -16,10 +16,13 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_severity = RiskLevelSeverity.UNKNOWN risk_score = None - yield CWEFindingType( - id=cwe_finding_type_id, - description=f"{data['name']} - {data['description']}", - source=f'https://cwe.mitre.org/data/definitions/{cwe_finding_type_id.split("-")[1]}.html', - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": CWEFindingType( + id=cwe_finding_type_id, + description=f"{data['name']} - {data['description']}", + source=f'https://cwe.mitre.org/data/definitions/{cwe_finding_type_id.split("-")[1]}.html', + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py index 46bcb0eb502..0da8ff59985 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/normalize.py @@ -28,12 +28,15 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_score = SEVERITY_SCORE_LOOKUP[risk_severity] - yield KATFindingType( - id=kat_finding_type_id, - description=finding_type_information.get("description", None), - source=finding_type_information.get("source", None), - impact=finding_type_information.get("impact", None), - recommendation=finding_type_information.get("recommendation", None), - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": KATFindingType( + id=kat_finding_type_id, + description=finding_type_information.get("description", None), + source=finding_type_information.get("source", None), + impact=finding_type_information.get("impact", None), + recommendation=finding_type_information.get("recommendation", None), + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py index fde3ca9561e..d22587a5dee 100644 --- a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py +++ b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py @@ -26,7 +26,6 @@ def get_ip_ports_and_service(host: NmapHost, network: Network, netblock: Referen if host.ipv4 else IPAddressV6(network=network.reference, address=host.address, netblock=netblock) ) - yield ip for port, protocol in open_ports: service: NmapService = host.get_service(port, protocol) diff --git a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py index b5a310c1e7a..443d8129174 100644 --- a/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_retirejs_finding_types/normalize.py @@ -63,9 +63,12 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_severity = RiskLevelSeverity(finding[0]["severity"].lower()) risk_score = SEVERITY_SCORE_LOOKUP[risk_severity] - yield RetireJSFindingType( - id=retirejs_finding_type_id, - description=_create_description(finding[0]), - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": RetireJSFindingType( + id=retirejs_finding_type_id, + description=_create_description(finding[0]), + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py index 41bfdc294e2..cabd2ca1624 100644 --- a/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py +++ b/boefjes/boefjes/plugins/kat_snyk_finding_types/normalize.py @@ -32,10 +32,13 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: risk_score = data.get("risk") risk_severity = get_risk_level(float(risk_score)) - yield SnykFindingType( - id=snyk_finding_type_id, - description=data.get("summary"), - source=f"https://snyk.io/vuln/{snyk_finding_type_id}", - risk_severity=risk_severity, - risk_score=risk_score, - ) + yield { + "type": "affirmation", + "ooi": SnykFindingType( + id=snyk_finding_type_id, + description=data.get("summary"), + source=f"https://snyk.io/vuln/{snyk_finding_type_id}", + risk_severity=risk_severity, + risk_score=risk_score, + ).dict(), + } diff --git a/boefjes/tests/test_cve_finding_types.py b/boefjes/tests/test_cve_finding_types.py index 004a376fbe1..986d681daed 100644 --- a/boefjes/tests/test_cve_finding_types.py +++ b/boefjes/tests/test_cve_finding_types.py @@ -9,6 +9,10 @@ from tests.loading import get_dummy_data +def dict_declare(ooi): + return {"type": "affirmation", "ooi": ooi.dict()} + + class CVETest(TestCase): maxDiff = None @@ -24,14 +28,16 @@ def test_cve_with_cvss(self): # noinspection PyTypeChecker expected = [ - CVEFindingType( - id="CVE-2021-46882", - description="The video framework has memory overwriting caused by addition overflow. " - "Successful exploitation of this vulnerability may affect availability.", - source="https://cve.circl.lu/cve/CVE-2021-46882", - risk_severity=RiskLevelSeverity.HIGH, - risk_score=7.5, - ), + dict_declare( + CVEFindingType( + id="CVE-2021-46882", + description="The video framework has memory overwriting caused by addition overflow. " + "Successful exploitation of this vulnerability may affect availability.", + source="https://cve.circl.lu/cve/CVE-2021-46882", + risk_severity=RiskLevelSeverity.HIGH, + risk_score=7.5, + ) + ) ] self.assertEqual(expected, oois) @@ -48,15 +54,17 @@ def test_cve_with_cvss2(self): # noinspection PyTypeChecker expected = [ - CVEFindingType( - id="CVE-2016-0616", - description="Unspecified vulnerability in Oracle MySQL 5.5.46 and earlier and MariaDB before " - "5.5.47, 10.0.x before 10.0.23, and 10.1.x before 10.1.10 allows remote authenticated users " - "to affect availability via unknown vectors related to Optimizer.", - source="https://cve.circl.lu/cve/CVE-2016-0616", - risk_severity=RiskLevelSeverity.MEDIUM, - risk_score=4.0, - ), + dict_declare( + CVEFindingType( + id="CVE-2016-0616", + description="Unspecified vulnerability in Oracle MySQL 5.5.46 and earlier and MariaDB before " + "5.5.47, 10.0.x before 10.0.23, and 10.1.x before 10.1.10 allows remote authenticated users " + "to affect availability via unknown vectors related to Optimizer.", + source="https://cve.circl.lu/cve/CVE-2016-0616", + risk_severity=RiskLevelSeverity.MEDIUM, + risk_score=4.0, + ) + ) ] self.assertEqual(expected, oois) @@ -73,16 +81,19 @@ def test_cve_without_cvss(self): # noinspection PyTypeChecker expected = [ - CVEFindingType( - id="CVE-2021-46882", - description="The Nested Pages plugin for WordPress is vulnerable to unauthorized loss of " - "data due to a missing capability check on the 'reset' function in versions up to, and including, " - "3.2.3. This makes it possible for authenticated attackers, with editor-level permissions and above, " - "to reset plugin settings.", - source="https://cve.circl.lu/cve/CVE-2021-46882", - risk_severity=RiskLevelSeverity.UNKNOWN, - risk_score=None, - ), + dict_declare( + CVEFindingType( + id="CVE-2021-46882", + description="The Nested Pages plugin for WordPress is vulnerable to unauthorized loss of " + "data due to a missing capability check on the 'reset' function in versions up to, and including, " + "3.2.3. This makes it possible for authenticated attackers, " + "with editor-level permissions and above, " + "to reset plugin settings.", + source="https://cve.circl.lu/cve/CVE-2021-46882", + risk_severity=RiskLevelSeverity.UNKNOWN, + risk_score=None, + ), + ) ] self.assertEqual(expected, oois) diff --git a/boefjes/tests/test_nmap.py b/boefjes/tests/test_nmap.py index e45e916d448..6809b61a1a5 100644 --- a/boefjes/tests/test_nmap.py +++ b/boefjes/tests/test_nmap.py @@ -96,7 +96,7 @@ def test_normalizer(self): boefje_meta = get_boefje_meta(input_ooi=input_ooi.reference) boefje_meta.arguments["input"] = serialize_ooi(input_ooi) output = list(run(get_normalizer_meta(boefje_meta), get_dummy_data("raw/nmap_mispoes.xml"))) - self.assertEqual(17, len(output)) + self.assertEqual(16, len(output)) for i, out in enumerate(output[:-1]): if out.object_type == "IPPort" and output[i + 1].object_type == "Service": if out.port == 80: diff --git a/octopoes/octopoes/api/models.py b/octopoes/octopoes/api/models.py index 79da71ba3a1..d1172fc526e 100644 --- a/octopoes/octopoes/api/models.py +++ b/octopoes/octopoes/api/models.py @@ -44,6 +44,15 @@ class Declaration(BaseModel): task_id: uuid.UUID | None = None +class Affirmation(BaseModel): + """Used by Octopoes Connector to describe request body""" + + ooi: OOIType + valid_time: datetime + method: str | None = None + task_id: uuid.UUID | None = None + + class ScanProfileDeclaration(BaseModel): reference: Reference level: int @@ -64,4 +73,13 @@ class ValidatedDeclaration(BaseModel): ooi: OOIType valid_time: AwareDatetime method: str | None = "manual" - task_id: uuid.UUID | None = Field(default_factory=lambda: uuid.uuid4()) + task_id: uuid.UUID | None = Field(default_factory=uuid.uuid4) + + +class ValidatedAffirmation(BaseModel): + """Used by Octopoes API to validate and parse correctly""" + + ooi: OOIType + valid_time: AwareDatetime + method: str | None = "hydration" + task_id: uuid.UUID | None = Field(default_factory=uuid.uuid4) diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index 188525a46da..39ab49c71b9 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -8,7 +8,7 @@ from pydantic import AwareDatetime from requests import RequestException -from octopoes.api.models import ServiceHealth, ValidatedDeclaration, ValidatedObservation +from octopoes.api.models import ServiceHealth, ValidatedAffirmation, ValidatedDeclaration, ValidatedObservation from octopoes.config.settings import ( DEFAULT_LIMIT, DEFAULT_OFFSET, @@ -294,12 +294,28 @@ def save_declaration( method=declaration.method if declaration.method else "manual", source=declaration.ooi.reference, result=[declaration.ooi.reference], - task_id=declaration.task_id if declaration.task_id else str(uuid.uuid4()), + task_id=declaration.task_id if declaration.task_id else uuid.uuid4(), ) octopoes.save_origin(origin, [declaration.ooi], declaration.valid_time) octopoes.commit() +@router.post("/affirmations", tags=["Origins"]) +def save_affirmation( + affirmation: ValidatedAffirmation, + octopoes: OctopoesService = Depends(octopoes_service), +) -> None: + origin = Origin( + origin_type=OriginType.AFFIRMATION, + method=affirmation.method if affirmation.method else "hydration", + source=affirmation.ooi.reference, + result=[affirmation.ooi.reference], + task_id=affirmation.task_id if affirmation.task_id else uuid.uuid4(), + ) + octopoes.save_origin(origin, [affirmation.ooi], affirmation.valid_time) + octopoes.commit() + + # ScanProfile-related endpoints @router.get("/scan_profiles", tags=["Scan Profiles"]) def list_scan_profiles( diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index d6dc845d968..e6426df323d 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -6,7 +6,7 @@ from pydantic import TypeAdapter from requests import HTTPError, Response -from octopoes.api.models import Declaration, Observation, ServiceHealth +from octopoes.api.models import Affirmation, Declaration, Observation, ServiceHealth from octopoes.config.settings import ( DEFAULT_LIMIT, DEFAULT_OFFSET, @@ -186,6 +186,9 @@ def save_observation(self, observation: Observation) -> None: def save_declaration(self, declaration: Declaration) -> None: self.session.post(f"/{self.client}/declarations", data=declaration.model_dump_json()) + def save_affirmation(self, affirmation: Affirmation) -> None: + self.session.post(f"/{self.client}/affirmations", data=affirmation.model_dump_json()) + def save_scan_profile(self, scan_profile: ScanProfile, valid_time: datetime): params = {"valid_time": str(valid_time)} self.session.put(f"/{self.client}/scan_profiles", params=params, data=scan_profile.model_dump_json()) diff --git a/octopoes/octopoes/core/service.py b/octopoes/octopoes/core/service.py index 1b0211342e2..368e7b301b5 100644 --- a/octopoes/octopoes/core/service.py +++ b/octopoes/octopoes/core/service.py @@ -147,7 +147,10 @@ def save_origin(self, origin: Origin, oois: list[OOI], valid_time: datetime) -> origin.result = [ooi.reference for ooi in oois] # When an Origin is saved while the source OOI does not exist, reject saving the results - if origin.origin_type != OriginType.DECLARATION and origin.source not in origin.result: + if ( + origin.origin_type not in [OriginType.DECLARATION, OriginType.AFFIRMATION] + and origin.source not in origin.result + ): try: self.ooi_repository.get(origin.source, valid_time) except ObjectNotFoundException: diff --git a/octopoes/octopoes/models/__init__.py b/octopoes/octopoes/models/__init__.py index f0f8ce5c8b7..ad582b5c709 100644 --- a/octopoes/octopoes/models/__init__.py +++ b/octopoes/octopoes/models/__init__.py @@ -6,9 +6,7 @@ Any, ClassVar, Literal, - Optional, TypeVar, - Union, ) from pydantic import BaseModel, GetCoreSchemaHandler, RootModel diff --git a/octopoes/octopoes/models/origin.py b/octopoes/octopoes/models/origin.py index 26026c57c4c..767d8ecd334 100644 --- a/octopoes/octopoes/models/origin.py +++ b/octopoes/octopoes/models/origin.py @@ -10,6 +10,7 @@ class OriginType(Enum): DECLARATION = "declaration" OBSERVATION = "observation" INFERENCE = "inference" + AFFIRMATION = "affirmation" class Origin(BaseModel): diff --git a/octopoes/tests/conftest.py b/octopoes/tests/conftest.py index 95c25391b0c..8c8864349ad 100644 --- a/octopoes/tests/conftest.py +++ b/octopoes/tests/conftest.py @@ -35,8 +35,9 @@ Website, ) from octopoes.repositories.ooi_repository import OOIRepository, XTDBOOIRepository +from octopoes.repositories.origin_parameter_repository import XTDBOriginParameterRepository from octopoes.repositories.origin_repository import XTDBOriginRepository -from octopoes.repositories.scan_profile_repository import ScanProfileRepository +from octopoes.repositories.scan_profile_repository import ScanProfileRepository, XTDBScanProfileRepository from octopoes.xtdb.client import XTDBHTTPClient, XTDBSession @@ -238,14 +239,72 @@ def octopoes_api_connector(xtdb_session: XTDBSession) -> OctopoesAPIConnector: return connector +class MockEventManager: + def __init__(self): + self.queue = [] + self.processed = [0] + + def publish(self, event) -> None: + self.queue.append(event) + + def unprocessed(self) -> list: + retval = self.queue[self.processed[-1] :] + self.processed.append(len(self.queue)) + return retval + + def process_events(self, xtdb_octopoes_service: OctopoesService) -> int: + targets = self.unprocessed() + for event in targets: + xtdb_octopoes_service.process_event(event) + xtdb_octopoes_service.commit() + return len(targets) + + def complete_process_events(self, xtdb_octopoes_service: OctopoesService, repeat: int = 3) -> int: + retval = 0 + for _ in range(repeat): + while True: + val = self.process_events(xtdb_octopoes_service) + if val == 0: + break + retval += val + return retval + + @pytest.fixture -def xtdb_ooi_repository(xtdb_session: XTDBSession) -> Iterator[XTDBOOIRepository]: - yield XTDBOOIRepository(Mock(spec=EventManager), xtdb_session) +def event_manager(xtdb_session: XTDBSession) -> Mock: + return MockEventManager() @pytest.fixture -def xtdb_origin_repository(xtdb_session: XTDBSession) -> Iterator[XTDBOOIRepository]: - yield XTDBOriginRepository(Mock(spec=EventManager), xtdb_session) +def xtdb_ooi_repository(xtdb_session: XTDBSession, event_manager) -> Iterator[XTDBOOIRepository]: + yield XTDBOOIRepository(event_manager, xtdb_session) + + +@pytest.fixture +def xtdb_origin_repository(xtdb_session: XTDBSession, event_manager) -> Iterator[XTDBOOIRepository]: + yield XTDBOriginRepository(event_manager, xtdb_session) + + +@pytest.fixture +def xtdb_origin_parameter_repository(xtdb_session: XTDBSession, event_manager) -> Iterator[XTDBOOIRepository]: + yield XTDBOriginParameterRepository(event_manager, xtdb_session) + + +@pytest.fixture +def xtdb_scan_profile_repository(xtdb_session: XTDBSession, event_manager) -> Iterator[XTDBOOIRepository]: + yield XTDBScanProfileRepository(event_manager, xtdb_session) + + +@pytest.fixture +def xtdb_octopoes_service( + xtdb_ooi_repository: XTDBOOIRepository, + xtdb_origin_repository: XTDBOriginRepository, + xtdb_origin_parameter_repository: XTDBOriginParameterRepository, + xtdb_scan_profile_repository: XTDBScanProfileRepository, +) -> OctopoesService: + return OctopoesService( + xtdb_ooi_repository, xtdb_origin_repository, xtdb_origin_parameter_repository, xtdb_scan_profile_repository + ) @pytest.fixture diff --git a/octopoes/tests/integration/test_ooi_deletion.py b/octopoes/tests/integration/test_ooi_deletion.py new file mode 100644 index 00000000000..f066c14567c --- /dev/null +++ b/octopoes/tests/integration/test_ooi_deletion.py @@ -0,0 +1,431 @@ +import os +import time +import uuid +from datetime import datetime +from ipaddress import ip_address +from unittest.mock import Mock + +import pytest + +from octopoes.api.models import Declaration, Observation +from octopoes.connector.octopoes import OctopoesAPIConnector +from octopoes.core.service import OctopoesService +from octopoes.events.events import OOIDBEvent, OriginDBEvent +from octopoes.models import OOI +from octopoes.models.ooi.dns.records import NXDOMAIN, DNSARecord +from octopoes.models.ooi.dns.zone import Hostname +from octopoes.models.ooi.findings import Finding, KATFindingType +from octopoes.models.ooi.network import IPAddressV4, Network +from octopoes.models.ooi.software import Software, SoftwareInstance +from octopoes.models.origin import Origin, OriginType + +if os.environ.get("CI") != "1": + pytest.skip("Needs XTDB multinode container.", allow_module_level=True) + + +def printer(arg1, arg2): + print(arg1) + for i, k in enumerate(arg2): + print(f">>{i}: {k}<<") + print() + + +@pytest.mark.xfail(reason="Issue #2083") +def test_hostname_nxd_ooi(octopoes_api_connector: OctopoesAPIConnector, valid_time: datetime): + network = Network(name="internet") + octopoes_api_connector.save_declaration(Declaration(ooi=network, valid_time=valid_time)) + url = "mispo.es" + hostname = Hostname(network=network.reference, name=url) + octopoes_api_connector.save_declaration(Declaration(ooi=hostname, valid_time=valid_time)) + + original_size = len(octopoes_api_connector.list_origins(task_id={})) + assert original_size >= 2 + octopoes_api_connector.recalculate_bits() + bits_size = len(octopoes_api_connector.list_origins(task_id={})) + assert bits_size >= original_size + + nxd = NXDOMAIN(hostname=hostname.reference) + octopoes_api_connector.save_observation( + Observation( + method="normalizer_id", + source=hostname.reference, + task_id=uuid.uuid4(), + valid_time=valid_time, + result=[nxd], + ) + ) + octopoes_api_connector.recalculate_bits() + + octopoes_api_connector.delete(network.reference) + octopoes_api_connector.delete(hostname.reference) + + # This sleep is here because otherwise on some systems this test will fail + # Delete when issue #2083 is resolved... + time.sleep(2) + assert len(octopoes_api_connector.list_origins(task_id={})) < bits_size + + octopoes_api_connector.recalculate_bits() + + assert len(octopoes_api_connector.list_origins(task_id={})) < original_size + + +def test_events_created_through_crud(xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime): + network = Network(name="internet") + + origin = Origin( + origin_type=OriginType.DECLARATION, + method="", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + xtdb_octopoes_service.save_origin(origin, [network], valid_time) + xtdb_octopoes_service.commit() + + assert len(event_manager.queue) == 2 + + call1 = event_manager.queue[0] + call2 = event_manager.queue[1] + + assert isinstance(call1, OOIDBEvent) + assert isinstance(call2, OriginDBEvent) + + assert call1.old_data is None + assert call1.new_data == network + assert call1.operation_type.value == "create" + + assert call2.old_data is None + assert call2.new_data == origin + assert call2.operation_type.value == "create" + + xtdb_octopoes_service.ooi_repository.delete(network.reference, valid_time) + xtdb_octopoes_service.commit() + + assert len(event_manager.queue) == 3 # Origin will be deleted by the worker due to the OOI delete event + call3 = event_manager.queue[2] + assert isinstance(call3, OOIDBEvent) + assert call3.operation_type.value == "delete" + + +def test_events_created_in_worker_during_handling( + xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime +): + network = Network(name="internet") + + origin = Origin( + origin_type=OriginType.DECLARATION, + method="", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + xtdb_octopoes_service.save_origin(origin, [network], valid_time) + xtdb_octopoes_service.commit() + xtdb_octopoes_service.ooi_repository.delete(network.reference, valid_time) + xtdb_octopoes_service.commit() + + assert len(event_manager.queue) == 3 + event = event_manager.queue[2] # OOIDelete event + + assert isinstance(event, OOIDBEvent) + assert event.operation_type.value == "delete" + + for event in event_manager.queue: + xtdb_octopoes_service.process_event(event) + xtdb_octopoes_service.commit() + + assert len(event_manager.queue) == 6 # Handling OOI delete event triggers Origin delete event + + event = event_manager.queue[5] # OOID]elete event + + assert isinstance(event, OriginDBEvent) + assert event.operation_type.value == "delete" + + +def test_events_deletion_after_bits(xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime): + network = Network(name="internet") + + origin = Origin( + origin_type=OriginType.DECLARATION, + method="manual", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + + url = "mispo.es" + hostname = Hostname(network=network.reference, name=url) + + xtdb_octopoes_service.save_origin(origin, [network], valid_time) + xtdb_octopoes_service.ooi_repository.save(hostname, valid_time) + print(1) + print(f"PROCESSED {event_manager.complete_process_events(xtdb_octopoes_service)}") + printer("OOIS", xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).items) + printer("ORIGINS", xtdb_octopoes_service.origin_repository.list_origins(valid_time)) + printer("EVENTS", event_manager.queue) + + xtdb_octopoes_service.recalculate_bits() + + print(2) + print(f"PROCESSED {event_manager.complete_process_events(xtdb_octopoes_service)}") + printer("OOIS", xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).items) + printer("ORIGINS", xtdb_octopoes_service.origin_repository.list_origins(valid_time)) + printer("EVENTS", event_manager.queue) + + xtdb_octopoes_service.ooi_repository.delete(network.reference, valid_time) + xtdb_octopoes_service.ooi_repository.delete(hostname.reference, valid_time) + + print(3) + print(f"PROCESSED {event_manager.complete_process_events(xtdb_octopoes_service)}") + printer("OOIS", xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).items) + printer("ORIGINS", xtdb_octopoes_service.origin_repository.list_origins(valid_time)) + printer("EVENTS", event_manager.queue) + + print(f"TOTAL PROCESSED {event_manager.processed}") + + +def test_deletion_events_after_nxdomain( + xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime +): + network = Network(name="internet") + + origin = Origin( + origin_type=OriginType.DECLARATION, + method="manual", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + + url = "mispo.es" + hostname = Hostname(network=network.reference, name=url) + + xtdb_octopoes_service.save_origin(origin, [network], valid_time) + xtdb_octopoes_service.ooi_repository.save(hostname, valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + finding_types = [ + KATFindingType(id="KAT-NO-SPF"), + KATFindingType(id="KAT-NO-DMARC"), + KATFindingType(id="KAT-NO-DKIM"), + ] + + findings = [Finding(finding_type=ft.reference, ooi=hostname.reference) for ft in finding_types] + + finding_origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=network.reference, + result=[finding.reference for finding in findings], + task_id=uuid.uuid4(), + ) + + for finding in findings: + xtdb_octopoes_service.ooi_repository.save(finding, valid_time) + xtdb_octopoes_service.save_origin(finding_origin, findings, valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + xtdb_octopoes_service.recalculate_bits() + + event_manager.complete_process_events(xtdb_octopoes_service) + + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) == 0 + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count == 6 + + nxd = NXDOMAIN(hostname=hostname.reference) + xtdb_octopoes_service.ooi_repository.save(nxd, valid_time) + + nxd_origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=network.reference, + result=[nxd.reference], + task_id=uuid.uuid4(), + ) + xtdb_octopoes_service.save_origin(nxd_origin, [nxd], valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + xtdb_octopoes_service.recalculate_bits() + + event_manager.complete_process_events(xtdb_octopoes_service) + + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) >= 3 + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count == 4 + + +@pytest.mark.xfail(reason="Wappalyzer works on wrong input objects (to be addressed)") +def test_deletion_events_after_nxdomain_with_wappalyzer_findings_included( + xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime +): + network = Network(name="internet") + + origin = Origin( + origin_type=OriginType.DECLARATION, + method="", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + + url = "mispo.es" + hostname = Hostname(network=network.reference, name=url) + + xtdb_octopoes_service.save_origin(origin, [network], valid_time) + xtdb_octopoes_service.ooi_repository.save(hostname, valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + software_oois = [ + Software(name="Bootstrap", version="3.3.7", cpe="cpe:/a:getbootstrap:bootstrap"), + Software(name="Nginx", version="1.18.0", cpe="cpe:/a:nginx:nginx"), + Software(name="cdnjs"), + Software(name="jQuery Migrate", version="1.0.0"), + Software(name="jQuery", version="3.6.0", cpe="cpe:/a:jquery:jquery"), + ] + instances = [SoftwareInstance(ooi=hostname.reference, software=software.reference) for software in software_oois] + + software_origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=network.reference, + result=[x.reference for x in (software_oois + instances)], + task_id=uuid.uuid4(), + ) + + for software, instance in zip(software_oois, instances): + xtdb_octopoes_service.ooi_repository.save(software, valid_time) + xtdb_octopoes_service.ooi_repository.save(instance, valid_time) + xtdb_octopoes_service.save_origin(software_origin, software_oois + instances, valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + xtdb_octopoes_service.recalculate_bits() + + finding_types = [ + KATFindingType(id="KAT-NO-SPF"), + KATFindingType(id="KAT-NO-DMARC"), + KATFindingType(id="KAT-NO-DKIM"), + ] + + findings = [Finding(finding_type=ft.reference, ooi=hostname.reference) for ft in finding_types] + + finding_origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=network.reference, + result=[finding.reference for finding in findings], + task_id=uuid.uuid4(), + ) + + for finding in findings: + xtdb_octopoes_service.ooi_repository.save(finding, valid_time) + xtdb_octopoes_service.save_origin(finding_origin, findings, valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + xtdb_octopoes_service.recalculate_bits() + + event_manager.complete_process_events(xtdb_octopoes_service) + + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) == 0 + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count == 16 + + nxd = NXDOMAIN(hostname=hostname.reference) + xtdb_octopoes_service.ooi_repository.save(nxd, valid_time) + + nxd_origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=network.reference, + result=[nxd.reference], + task_id=uuid.uuid4(), + ) + xtdb_octopoes_service.save_origin(nxd_origin, [nxd], valid_time) + + event_manager.complete_process_events(xtdb_octopoes_service) + + xtdb_octopoes_service.recalculate_bits() + + event_manager.complete_process_events(xtdb_octopoes_service) + + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) >= 3 + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count == 4 + + +def test_easy_chain_deletion(xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime): + network = Network(name="internet") + + network_origin = Origin( + origin_type=OriginType.DECLARATION, + method="A", + source=network.reference, + result=[network.reference], + task_id=uuid.uuid4(), + ) + xtdb_octopoes_service.save_origin(network_origin, [network], valid_time) + + def chain(source, results): + origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=source.reference, + result=[result.reference for result in results], + task_id=uuid.uuid4(), + ) + for result in results: + xtdb_octopoes_service.ooi_repository.save(result, valid_time) + xtdb_octopoes_service.save_origin(origin, results, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + return origin, results + + hostname = Hostname(network=network.reference, name="mispo.es") + xtdb_octopoes_service.ooi_repository.save(hostname, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + + _, ip = chain(hostname, [IPAddressV4(network=network.reference, address=ip_address("134.209.85.72"))]) + chain(ip[0], [DNSARecord(hostname=hostname.reference, address=ip[0].reference, value="134.209.85.72")]) + + software = Software(name="ACME") + instance = SoftwareInstance(ooi=ip[0].reference, software=software.reference) + xtdb_octopoes_service.ooi_repository.save(software, valid_time) + xtdb_octopoes_service.ooi_repository.save(instance, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + + count = xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count + + xtdb_octopoes_service.ooi_repository.delete(ip[0].reference, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count < count + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) > 0 + + +def test_basic_chain_deletion(xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime): + def chain(source, results): + origin = Origin( + origin_type=OriginType.OBSERVATION, + method="", + source=source.reference, + result=[result.reference for result in results], + task_id=uuid.uuid4(), + ) + for result in results: + xtdb_octopoes_service.ooi_repository.save(result, valid_time) + xtdb_octopoes_service.save_origin(origin, results, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + return origin, results + + software1 = Software(name="ACME", version="v1") + xtdb_octopoes_service.ooi_repository.save(software1, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + + chain(software1, [Software(name="ACME", version="v2")]) + + xtdb_octopoes_service.ooi_repository.delete(software1.reference, valid_time) + event_manager.complete_process_events(xtdb_octopoes_service) + + assert xtdb_octopoes_service.ooi_repository.list_oois({OOI}, valid_time).count == 0 + assert len(list(filter(lambda x: x.operation_type.value == "delete", event_manager.queue))) > 0 From 69fcacb7b6fce28a4425aef75216eda130e06c94 Mon Sep 17 00:00:00 2001 From: zcrt <115991818+zcrt@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:11:52 +0100 Subject: [PATCH 57/85] Add VLSM settings for Nmap IP-range (#1378) Co-authored-by: Jan Klopper Co-authored-by: Jeroen Dekkers --- .../plugins/kat_nmap_ip_range/boefje.json | 6 ++- .../boefjes/plugins/kat_nmap_ip_range/main.py | 39 +++++++++++++++---- .../plugins/kat_nmap_ip_range/schema.json | 26 +++++++++++-- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json b/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json index 1691c8f1617..47b3ca3088c 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json +++ b/boefjes/boefjes/plugins/kat_nmap_ip_range/boefje.json @@ -1,14 +1,16 @@ { "id": "nmap-ip-range", "name": "Nmap IP range", - "description": "Scan an IP range and store found IPs.", + "description": "Scan an IP range and store found IPs. Defaults to top-250 TCP and top-10 UDP on ranges with 1024 addresses or less. Larger ranges are skipped by default.", "consumes": [ "IPV6NetBlock", "IPV4NetBlock" ], "environment_keys": [ "TOP_PORTS_TCP", - "TOP_PORTS_UDP" + "TOP_PORTS_UDP", + "MIN_VLSM_IPV4", + "MIN_VLSM_IPV6" ], "scan_level": 2 } diff --git a/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py b/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py index 5d7142734ba..bf8b96dde57 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py +++ b/boefjes/boefjes/plugins/kat_nmap_ip_range/main.py @@ -1,4 +1,5 @@ -from ipaddress import IPv6Network, ip_network +import logging +from ipaddress import IPv4Network, IPv6Network, ip_network from os import getenv import docker @@ -7,7 +8,6 @@ NMAP_IMAGE = "instrumentisto/nmap:latest" TOP_PORTS_MAX = 65535 -TOP_PORTS_DEFAULT = 250 TOP_PORTS_MIN = 1 @@ -17,24 +17,49 @@ def run_nmap(args: list[str]) -> str: return client.containers.run(NMAP_IMAGE, args, remove=True).decode() -def build_nmap_arguments(ip_range: str, top_ports: int, protocol_str: str) -> list[str]: +def build_nmap_arguments(ip_range: IPv6Network | IPv4Network, top_ports: int, protocol_str: str) -> list[str]: """Build nmap arguments from the hosts IP with the required ports.""" if protocol_str not in ["S", "U"]: raise ValueError('Protocol should be "S" or "U"') if not TOP_PORTS_MIN <= top_ports <= TOP_PORTS_MAX: raise ValueError(f"{TOP_PORTS_MIN} <= TOP_PORTS: {top_ports} <= {TOP_PORTS_MAX} is invalid.") - args = ["nmap", "--open", "-T4", "-Pn", "-r", "-v10", f"-s{protocol_str}", "--top-ports", str(top_ports)] - if isinstance(ip_network(ip_range), IPv6Network): + args = [ + "nmap", + "--open", + "-T4", + "-Pn", + "-r", + "-v10", + f"-s{protocol_str}", + "--top-ports", + str(top_ports), + ] + if ip_range.version == 6: args.append("-6") - args.extend(["-oX", "-", ip_range]) + args.extend(["-oX", "-", str(ip_range)]) return args def run(boefje_meta: BoefjeMeta) -> list[tuple[set, bytes | str]]: """Build Nmap arguments and return results to normalizer.""" - ip_range = f"{boefje_meta.arguments['input']['start_ip']['address']}/{str(boefje_meta.arguments['input']['mask'])}" + ip_range = ip_network( + f"{boefje_meta.arguments['input']['start_ip']['address']}/{str(boefje_meta.arguments['input']['mask'])}" + ) + + min_mask = int(getenv("MIN_VLSM_IPV4", 22)) + if isinstance(ip_range, IPv6Network): + min_mask = int(getenv("MIN_VLSM_IPV6", 118)) + + if ip_range.prefixlen < min_mask: + logging.info( + "Minimum expected VLSM %d > %d, skipping this range.", + min_mask, + ip_range.prefixlen, + ) + return [(set("info/boefje"), "Skipping range due to unaccepted VSLM.")] + top_ports_tcp = int(getenv("TOP_PORTS_TCP", 250)) top_ports_udp = int(getenv("TOP_PORTS_UDP", 10)) if not top_ports_tcp and not top_ports_udp: diff --git a/boefjes/boefjes/plugins/kat_nmap_ip_range/schema.json b/boefjes/boefjes/plugins/kat_nmap_ip_range/schema.json index 6e2f7408b1e..c80f09d1bf5 100644 --- a/boefjes/boefjes/plugins/kat_nmap_ip_range/schema.json +++ b/boefjes/boefjes/plugins/kat_nmap_ip_range/schema.json @@ -5,16 +5,34 @@ "TOP_PORTS_TCP": { "title": "TOP_PORTS_TCP", "type": "integer", - "minimum": 1, + "minimum": 0, "maximum": 65535, + "default": 250, "description": "Scan TOP_PORTS_TCP most common TCP ports. Defaults to 250." }, "TOP_PORTS_UDP": { "title": "TOP_PORTS_UDP", - "type": "integer", - "minimum": 1, - "maximum": 65535, + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 10, "description": "Scan TOP_PORTS_UDP most common UDP ports. Defaults to 10." + }, + "MIN_VLSM_IPV4": { + "title": "MIN_VLSM_IPV4", + "type": "integer", + "minimum": 0, + "maximum": 32, + "default": 22, + "description": "Minimum variable-length subnet mask for IPv4-ranges. Defaults to 22. Use this value to prevent scanning large ranges." + }, + "MIN_VLSM_IPV6": { + "title": "MIN_VLSM_IPV6", + "type": "integer", + "minimum": 0, + "maximum": 128, + "default": 118, + "description": "Minimum variable-length subnet mask for IPv6-ranges. Defaults to 118. Use this value to prevent scanning large ranges." } }, "required": [] From 213ef3d95220053d0dee1284d4301c1e870e75fd Mon Sep 17 00:00:00 2001 From: Madelon Dohmen <99282220+madelondohmen@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:35:01 +0100 Subject: [PATCH 58/85] Safe Connections Report unit tests (#2515) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- .../safe_connections_report/report.py | 4 - rocky/tests/conftest.py | 31 +++++++ .../reports/test_safe_connections_report.py | 86 +++++++++++++++++++ 3 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 rocky/tests/reports/test_safe_connections_report.py diff --git a/rocky/reports/report_types/safe_connections_report/report.py b/rocky/reports/report_types/safe_connections_report/report.py index 148b376c7fc..91ea4b35b30 100644 --- a/rocky/reports/report_types/safe_connections_report/report.py +++ b/rocky/reports/report_types/safe_connections_report/report.py @@ -40,7 +40,6 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: sc_ips = {} number_of_ips = len(ips) number_of_available = number_of_ips - finding_types = [] for ip in ips: finding_types = self.octopoes_api_connector.query( @@ -51,8 +50,6 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: ) cipher_findings = list(filter(lambda finding: finding.id in CIPHER_FINDINGS, finding_types)) - finding_types.extend(cipher_findings) - sc_ips[ip.reference] = cipher_findings number_of_available -= 1 if cipher_findings else 0 @@ -61,5 +58,4 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: "sc_ips": sc_ips, "number_of_available": number_of_available, "number_of_ips": number_of_ips, - "finding_types": finding_types, } diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 68ebc8336e8..9a8833d4789 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -556,6 +556,37 @@ def finding_types(): ] +@pytest.fixture +def cipher_finding_types(): + return [ + KATFindingType( + id="KAT-RECOMMENDATION-BAD-CIPHER", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=3.0, + risk_severity=RiskLevelSeverity.RECOMMENDATION, + ), + KATFindingType( + id="KAT-CRITICAL-BAD-CIPHER", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=10.0, + risk_severity=RiskLevelSeverity.CRITICAL, + ), + ] + + +@pytest.fixture +def cipher_finding_type(): + return KATFindingType( + id="KAT-MEDIUM-BAD-CIPHER", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=6.0, + risk_severity=RiskLevelSeverity.MEDIUM, + ) + + @pytest.fixture def finding_type_kat_no_spf(): return KATFindingType( diff --git a/rocky/tests/reports/test_safe_connections_report.py b/rocky/tests/reports/test_safe_connections_report.py new file mode 100644 index 00000000000..f82950e8542 --- /dev/null +++ b/rocky/tests/reports/test_safe_connections_report.py @@ -0,0 +1,86 @@ +from reports.report_types.safe_connections_report.report import SafeConnectionsReport + + +def test_safe_connections_report_no_finding_types(mock_octopoes_api_connector, valid_time, hostname): + mock_octopoes_api_connector.oois = { + hostname.reference: hostname, + } + mock_octopoes_api_connector.queries = { + "Hostname. Date: Tue, 20 Feb 2024 11:26:19 +0100 Subject: [PATCH 59/85] Bump settings-doc from 3.0.0 to 4.0.0 (#2529) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ammar Co-authored-by: Jan Klopper --- poetry.lock | 11 ++++++----- pyproject.toml | 2 +- requirements.txt | 7 ++++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index f2905f68e08..d6e9c1a6c0e 100644 --- a/poetry.lock +++ b/poetry.lock @@ -560,6 +560,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -635,13 +636,13 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "settings-doc" -version = "3.0.0" +version = "4.0.0" description = "A command line tool for generating Markdown documentation and .env files from pydantic BaseSettings." optional = false -python-versions = ">=3.8,<4.0" +python-versions = ">=3.8.1,<4.0.0" files = [ - {file = "settings_doc-3.0.0-py3-none-any.whl", hash = "sha256:078c3873813145c772bd9670740153569d27e6b2858bf702ec5bb5d0454dcdaa"}, - {file = "settings_doc-3.0.0.tar.gz", hash = "sha256:3c300987a2a05ee8481ed19d5ca40e2c3cc222d1796b4262b50c234545dd52a4"}, + {file = "settings_doc-4.0.0-py3-none-any.whl", hash = "sha256:89542f8165ecc3e72b8d8241d6d83034ca824e890c961c935e38d5c15b75b582"}, + {file = "settings_doc-4.0.0.tar.gz", hash = "sha256:2b6cc1529707ebf1e47c655b7e4f190254e9b3784b87b5c2cb7174346694e921"}, ] [package.dependencies] @@ -893,4 +894,4 @@ zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "892541d00399ca2699e4c55805103332a1e10d00faef76379bfb396240a3f02e" +content-hash = "d20a5280b2b5b53011b3893a5be9263304f84fb4b0039a8c70b2e04c3fc35116" diff --git a/pyproject.toml b/pyproject.toml index 5a55517e47c..6144e2e37d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -122,5 +122,5 @@ sphinx = "<8" sphinx_rtd_theme = "2.0.0" sphinxcontrib-mermaid = "^0.9.2" myst-parser = "^2.0.0" -settings-doc = "^3.0.0" +settings-doc = "^4.0.0" colorama = "0.4.6" # Required on all platforms, not just win32 diff --git a/requirements.txt b/requirements.txt index 1105973d5dd..7fa1405df51 100644 --- a/requirements.txt +++ b/requirements.txt @@ -317,6 +317,7 @@ pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -344,9 +345,9 @@ requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 -settings-doc==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:078c3873813145c772bd9670740153569d27e6b2858bf702ec5bb5d0454dcdaa \ - --hash=sha256:3c300987a2a05ee8481ed19d5ca40e2c3cc222d1796b4262b50c234545dd52a4 +settings-doc==4.0.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:2b6cc1529707ebf1e47c655b7e4f190254e9b3784b87b5c2cb7174346694e921 \ + --hash=sha256:89542f8165ecc3e72b8d8241d6d83034ca824e890c961c935e38d5c15b75b582 shellingham==1.5.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686 \ --hash=sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de From 1dc808938493ade73623067b048ea6ef61abbb32 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Tue, 20 Feb 2024 11:57:52 +0100 Subject: [PATCH 60/85] unit tests rpki report (#2511) Co-authored-by: stephanie0x00 <9821756+stephanie0x00@users.noreply.github.com> Co-authored-by: Jeroen Dekkers --- rocky/tests/conftest.py | 10 +++ rocky/tests/reports/test_rpki_report.py | 107 ++++++++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 rocky/tests/reports/test_rpki_report.py diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 9a8833d4789..34b422605a4 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -529,6 +529,16 @@ def finding(): ) +@pytest.fixture +def no_rpki_finding_type(): + return KATFindingType(id="KAT-NO-RPKI") + + +@pytest.fixture +def expired_rpki_finding_type(): + return KATFindingType(id="KAT-EXPIRED-RPKI") + + @pytest.fixture def finding_types(): return [ diff --git a/rocky/tests/reports/test_rpki_report.py b/rocky/tests/reports/test_rpki_report.py new file mode 100644 index 00000000000..c643a7a5fa5 --- /dev/null +++ b/rocky/tests/reports/test_rpki_report.py @@ -0,0 +1,107 @@ +from reports.report_types.rpki_report.report import RPKIReport + + +def test_rpki_report_no_ip(mock_octopoes_api_connector, valid_time, hostname): + mock_octopoes_api_connector.oois = { + hostname.reference: hostname, + } + mock_octopoes_api_connector.queries = { + "Hostname. Date: Wed, 21 Feb 2024 20:09:34 +0100 Subject: [PATCH 61/85] Translations update from Hosted Weblate (#2546) Co-authored-by: PAUL MICHIEL VAN DER BLONK --- .../locale/en@pirate/LC_MESSAGES/django.po | 190 +++++++--- rocky/rocky/locale/fr/LC_MESSAGES/django.po | 190 +++++++--- rocky/rocky/locale/fy/LC_MESSAGES/django.po | 190 +++++++--- rocky/rocky/locale/it/LC_MESSAGES/django.po | 272 ++++++++++----- rocky/rocky/locale/nl/LC_MESSAGES/django.po | 326 ++++++++++++------ rocky/rocky/locale/pap/LC_MESSAGES/django.po | 267 +++++++++----- 6 files changed, 1018 insertions(+), 417 deletions(-) diff --git a/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po index 48718ac181a..5d1c77ebb6a 100644 --- a/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/en@pirate/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: 2023-11-18 13:03+0000\n" "Last-Translator: jan klopper \n" "Language-Team: English (Pirate) Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Record" +msgid "TTL" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -3274,6 +3294,10 @@ msgstr "" msgid "This is the OpenKAT Sector rapport." msgstr "" +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "" @@ -3363,6 +3387,14 @@ msgstr "" msgid "Multi Organization Report" msgstr "" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -3751,17 +3783,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -3853,19 +3906,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html @@ -3904,6 +3957,17 @@ msgstr "" msgid "Select at least one report type to proceed." msgstr "" +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -3920,6 +3984,10 @@ msgstr "" msgid "Date" msgstr "" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4179,7 +4247,7 @@ msgstr "" msgid "Only CSV file supported" msgstr "" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "" @@ -4219,10 +4287,6 @@ msgstr "" msgid "Choose a type of which objects are added." msgstr "" -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "" @@ -4596,6 +4660,18 @@ msgstr "" msgid "User overview:" msgstr "" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "" @@ -5646,11 +5722,6 @@ msgstr "" msgid "Upload CSV" msgstr "" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "" @@ -6034,12 +6105,12 @@ msgid "You don't have any backup codes yet." msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -#: rocky/templates/two_factor/core/setup_complete.html -msgid "Back to Account Security" +msgid "Generate Tokens" msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" msgstr "" #: rocky/templates/two_factor/core/login.html @@ -6263,6 +6334,10 @@ msgstr "" msgid "Indemnification successfully set." msgstr "" +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" @@ -6564,6 +6639,13 @@ msgid "" "required, optionally a second column 'network' is supported " msgstr "" +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "" diff --git a/rocky/rocky/locale/fr/LC_MESSAGES/django.po b/rocky/rocky/locale/fr/LC_MESSAGES/django.po index dae67d852ba..6ac0382035c 100644 --- a/rocky/rocky/locale/fr/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/fr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -26,6 +26,7 @@ msgstr "" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html #: rocky/templates/organizations/organization_settings.html @@ -285,6 +286,10 @@ msgstr "" msgid "date joined" msgstr "" +#: account/models.py +msgid "name" +msgstr "" + #: account/templates/account_detail.html account/views/account.py msgid "Account details" msgstr "" @@ -351,8 +356,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Withdraw acceptance of level L%(acl)s " -"clearance and responsibility\"\n" +" Withdraw L%(acl)s clearance and responsibility\n" " " msgstr "" @@ -373,8 +377,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Accept level L%(tcl)s clearance and " -"responsibility\"\n" +" Accept level L%(tcl)s clearance and responsibility\n" " " msgstr "" @@ -384,12 +387,12 @@ msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Back" +msgid "Send" msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Send" +msgid "Back" msgstr "" #: account/templates/password_reset_confirm.html @@ -463,11 +466,11 @@ msgid "Please contact the system administrator." msgstr "" #: account/templates/recover_email.html -msgid "Back to Home" +msgid "Back to login" msgstr "" #: account/templates/recover_email.html -msgid "Back to login" +msgid "Back to Home" msgstr "" #: account/templates/registration_email.html @@ -1426,7 +1429,6 @@ msgstr "" #: katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html -#: reports/report_types/dns_report/report.html #: rocky/templates/oois/ooi_delete.html msgid "Value" msgstr "" @@ -1634,11 +1636,11 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting\n" +" Add setting and enable boefje\n" " " msgid_plural "" "\n" -" Add settings\n" +" Add settings and enable boefje\n" " " msgstr[0] "" msgstr[1] "" @@ -1646,12 +1648,12 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting and enable boefje\n" -" " +" Add setting\n" +" " msgid_plural "" "\n" -" Add settings and enable boefje\n" -" " +" Add settings\n" +" " msgstr[0] "" msgstr[1] "" @@ -2032,13 +2034,13 @@ msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -msgid "Go back to previous step" +msgid "Skip this step" msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -msgid "Skip this step" +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" msgstr "" #: onboarding/templates/account/step_5_account_setup_red_teamer.html @@ -2165,6 +2167,7 @@ msgid "" msgstr "" #: onboarding/templates/step_2a_choose_report_info.html +#: reports/report_types/dns_report/report.html msgid "Data" msgstr "" @@ -2704,6 +2707,10 @@ msgstr "" msgid "Selected objects" msgstr "" +#: reports/report_types/aggregate_organisation_report/appendix.html +msgid "Currently filtered on" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/partials/report_sidemenu.html #: reports/templates/summary/report_summary.html @@ -2847,6 +2854,11 @@ msgstr "" msgid "OpenKAT Aggregate Report" msgstr "" +#: reports/report_types/aggregate_organisation_report/introduction.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "" + #: reports/report_types/aggregate_organisation_report/introduction.html #: rocky/templates/oois/ooi_report.html #: rocky/templates/partials/findings_list_toolbar.html @@ -2862,10 +2874,14 @@ msgid "This is the OpenKAT report for organization" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html -#: reports/report_types/aggregate_organisation_report/report_design.html +#: reports/templates/partials/report_header.html +msgid "Created with data from" +msgstr "" + +#: reports/report_types/aggregate_organisation_report/introduction.html #: reports/report_types/multi_organization_report/introduction.html #: reports/templates/partials/report_header.html -msgid "Observed at:" +msgid "Created on" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html @@ -2979,6 +2995,10 @@ msgstr "" msgid "Terms in report" msgstr "" +#: reports/report_types/aggregate_organisation_report/report_design.html +msgid "Observed at:" +msgstr "" + #: reports/report_types/aggregate_organisation_report/report_design.html #: reports/report_types/vulnerability_report/report.html msgid "vulnerabilities on this system" @@ -3128,39 +3148,39 @@ msgid "" msgstr "" #: reports/report_types/dns_report/report.html -msgid "IP address lookup" +msgid "Records found" msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "warning" +msgid "" +"The table below gives an overview of the DNS records that were found for the " +"abovementioned DNSZone." msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "Warning" +msgid "" +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Record" +msgid "TTL" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -3271,6 +3291,10 @@ msgstr "" msgid "This is the OpenKAT Sector rapport." msgstr "" +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "" @@ -3360,6 +3384,14 @@ msgstr "" msgid "Multi Organization Report" msgstr "" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -3748,17 +3780,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -3850,19 +3903,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html @@ -3901,6 +3954,17 @@ msgstr "" msgid "Select at least one report type to proceed." msgstr "" +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -3917,6 +3981,10 @@ msgstr "" msgid "Date" msgstr "" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4176,7 +4244,7 @@ msgstr "" msgid "Only CSV file supported" msgstr "" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "" @@ -4216,10 +4284,6 @@ msgstr "" msgid "Choose a type of which objects are added." msgstr "" -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "" @@ -4593,6 +4657,18 @@ msgstr "" msgid "User overview:" msgstr "" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "" @@ -5643,11 +5719,6 @@ msgstr "" msgid "Upload CSV" msgstr "" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "" @@ -6031,12 +6102,12 @@ msgid "You don't have any backup codes yet." msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -#: rocky/templates/two_factor/core/setup_complete.html -msgid "Back to Account Security" +msgid "Generate Tokens" msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" msgstr "" #: rocky/templates/two_factor/core/login.html @@ -6260,6 +6331,10 @@ msgstr "" msgid "Indemnification successfully set." msgstr "" +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" @@ -6561,6 +6636,13 @@ msgid "" "required, optionally a second column 'network' is supported " msgstr "" +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "" diff --git a/rocky/rocky/locale/fy/LC_MESSAGES/django.po b/rocky/rocky/locale/fy/LC_MESSAGES/django.po index 1fb2e2cc665..cc6020464ef 100644 --- a/rocky/rocky/locale/fy/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/fy/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -26,6 +26,7 @@ msgstr "" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html #: rocky/templates/organizations/organization_settings.html @@ -285,6 +286,10 @@ msgstr "" msgid "date joined" msgstr "" +#: account/models.py +msgid "name" +msgstr "" + #: account/templates/account_detail.html account/views/account.py msgid "Account details" msgstr "" @@ -351,8 +356,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Withdraw acceptance of level L%(acl)s " -"clearance and responsibility\"\n" +" Withdraw L%(acl)s clearance and responsibility\n" " " msgstr "" @@ -373,8 +377,7 @@ msgstr "" #, python-format msgid "" "\n" -" \"Accept level L%(tcl)s clearance and " -"responsibility\"\n" +" Accept level L%(tcl)s clearance and responsibility\n" " " msgstr "" @@ -384,12 +387,12 @@ msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Back" +msgid "Send" msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Send" +msgid "Back" msgstr "" #: account/templates/password_reset_confirm.html @@ -463,11 +466,11 @@ msgid "Please contact the system administrator." msgstr "" #: account/templates/recover_email.html -msgid "Back to Home" +msgid "Back to login" msgstr "" #: account/templates/recover_email.html -msgid "Back to login" +msgid "Back to Home" msgstr "" #: account/templates/registration_email.html @@ -1426,7 +1429,6 @@ msgstr "" #: katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html -#: reports/report_types/dns_report/report.html #: rocky/templates/oois/ooi_delete.html msgid "Value" msgstr "" @@ -1634,11 +1636,11 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting\n" +" Add setting and enable boefje\n" " " msgid_plural "" "\n" -" Add settings\n" +" Add settings and enable boefje\n" " " msgstr[0] "" msgstr[1] "" @@ -1646,12 +1648,12 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting and enable boefje\n" -" " +" Add setting\n" +" " msgid_plural "" "\n" -" Add settings and enable boefje\n" -" " +" Add settings\n" +" " msgstr[0] "" msgstr[1] "" @@ -2032,13 +2034,13 @@ msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -msgid "Go back to previous step" +msgid "Skip this step" msgstr "" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -msgid "Skip this step" +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" msgstr "" #: onboarding/templates/account/step_5_account_setup_red_teamer.html @@ -2165,6 +2167,7 @@ msgid "" msgstr "" #: onboarding/templates/step_2a_choose_report_info.html +#: reports/report_types/dns_report/report.html msgid "Data" msgstr "" @@ -2704,6 +2707,10 @@ msgstr "" msgid "Selected objects" msgstr "" +#: reports/report_types/aggregate_organisation_report/appendix.html +msgid "Currently filtered on" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/partials/report_sidemenu.html #: reports/templates/summary/report_summary.html @@ -2847,6 +2854,11 @@ msgstr "" msgid "OpenKAT Aggregate Report" msgstr "" +#: reports/report_types/aggregate_organisation_report/introduction.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "" + #: reports/report_types/aggregate_organisation_report/introduction.html #: rocky/templates/oois/ooi_report.html #: rocky/templates/partials/findings_list_toolbar.html @@ -2862,10 +2874,14 @@ msgid "This is the OpenKAT report for organization" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html -#: reports/report_types/aggregate_organisation_report/report_design.html +#: reports/templates/partials/report_header.html +msgid "Created with data from" +msgstr "" + +#: reports/report_types/aggregate_organisation_report/introduction.html #: reports/report_types/multi_organization_report/introduction.html #: reports/templates/partials/report_header.html -msgid "Observed at:" +msgid "Created on" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html @@ -2979,6 +2995,10 @@ msgstr "" msgid "Terms in report" msgstr "" +#: reports/report_types/aggregate_organisation_report/report_design.html +msgid "Observed at:" +msgstr "" + #: reports/report_types/aggregate_organisation_report/report_design.html #: reports/report_types/vulnerability_report/report.html msgid "vulnerabilities on this system" @@ -3128,39 +3148,39 @@ msgid "" msgstr "" #: reports/report_types/dns_report/report.html -msgid "IP address lookup" +msgid "Records found" msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "warning" +msgid "" +"The table below gives an overview of the DNS records that were found for the " +"abovementioned DNSZone." msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "Warning" +msgid "" +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Record" +msgid "TTL" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -3271,6 +3291,10 @@ msgstr "" msgid "This is the OpenKAT Sector rapport." msgstr "" +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "" @@ -3360,6 +3384,14 @@ msgstr "" msgid "Multi Organization Report" msgstr "" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -3748,17 +3780,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -3850,19 +3903,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html @@ -3901,6 +3954,17 @@ msgstr "" msgid "Select at least one report type to proceed." msgstr "" +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -3917,6 +3981,10 @@ msgstr "" msgid "Date" msgstr "" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4176,7 +4244,7 @@ msgstr "" msgid "Only CSV file supported" msgstr "" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "" @@ -4216,10 +4284,6 @@ msgstr "" msgid "Choose a type of which objects are added." msgstr "" -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "" @@ -4593,6 +4657,18 @@ msgstr "" msgid "User overview:" msgstr "" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "" @@ -5643,11 +5719,6 @@ msgstr "" msgid "Upload CSV" msgstr "" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "" @@ -6031,12 +6102,12 @@ msgid "You don't have any backup codes yet." msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -#: rocky/templates/two_factor/core/setup_complete.html -msgid "Back to Account Security" +msgid "Generate Tokens" msgstr "" #: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" +#: rocky/templates/two_factor/core/setup_complete.html +msgid "Back to Account Security" msgstr "" #: rocky/templates/two_factor/core/login.html @@ -6260,6 +6331,10 @@ msgstr "" msgid "Indemnification successfully set." msgstr "" +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" @@ -6561,6 +6636,13 @@ msgid "" "required, optionally a second column 'network' is supported " msgstr "" +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "" diff --git a/rocky/rocky/locale/it/LC_MESSAGES/django.po b/rocky/rocky/locale/it/LC_MESSAGES/django.po index 21e07fd844b..e11366d1dc2 100644 --- a/rocky/rocky/locale/it/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/it/LC_MESSAGES/django.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: 2023-11-16 20:05+0000\n" "Last-Translator: Luca Racchetti \n" "Language-Team: Italian not in compliance to internet.nl standards." +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html @@ -3593,7 +3595,11 @@ msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "TTL" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -3704,6 +3710,10 @@ msgstr "" msgid "This is the OpenKAT Sector rapport." msgstr "" +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "" @@ -3793,6 +3803,14 @@ msgstr "Occorrenza" msgid "Multi Organization Report" msgstr "" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -4181,17 +4199,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -4283,19 +4322,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html @@ -4334,6 +4373,17 @@ msgstr "" msgid "Select at least one report type to proceed." msgstr "" +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -4350,6 +4400,10 @@ msgstr "" msgid "Date" msgstr "Data" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4618,7 +4672,7 @@ msgstr "Profondità dell'albero." msgid "Only CSV file supported" msgstr "Supportato solo il file CSV" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "Impossibile decodificare il file" @@ -4658,11 +4712,6 @@ msgstr "Tipo di oggetto" msgid "Choose a type of which objects are added." msgstr "Scegli un tipo di oggetto da aggiungere." -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "" -"Il codice organizzazione(i) per il file raw non esiste nel nostro database" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "Tipi MIME" @@ -5056,6 +5105,18 @@ msgstr "Benvenuto" msgid "User overview:" msgstr "Panoramica utente:" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "avviso" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "Avviso" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "Codice organizzazione mancante" @@ -6197,11 +6258,6 @@ msgstr "Scansione degli oggetti" msgid "Upload CSV" msgstr "Carica CSV" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "Esporta" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "Scarica come JSON" @@ -6618,15 +6674,15 @@ msgstr "Stampa questi token e conservali in un luogo sicuro." msgid "You don't have any backup codes yet." msgstr "Non hai ancora codici di backup." +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "Genera Token" + #: rocky/templates/two_factor/core/backup_tokens.html #: rocky/templates/two_factor/core/setup_complete.html msgid "Back to Account Security" msgstr "Torna alla sicurezza dell'account" -#: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" -msgstr "Genera Token" - #: rocky/templates/two_factor/core/login.html msgid "You are logged in." msgstr "Hai effettuato l'accesso." @@ -6885,6 +6941,10 @@ msgstr "Migliorato" msgid "Indemnification successfully set." msgstr "Indennizzo impostato con successo." +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" @@ -7234,6 +7294,13 @@ msgstr "" "Per i tipi di oggetto IPAddressV4 e IPAddressV6, è richiesta una colonna con " "valori 'address', facoltativamente è supportata una seconda colonna 'network'" +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "Impossibile creare l'oggetto/i per il/i numero/i di riga: " @@ -7251,6 +7318,51 @@ msgstr "Impossibile caricare il file raw su Bytes: codice di stato %s" msgid "Raw file successfully added." msgstr "File raw aggiunto con successo." +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Withdraw acceptance of level L%(acl)s " +#~ "clearance and responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \"Ritira l'accettazione del livello di " +#~ "autorizzazione L%(acl)s e la relativa responsabilità\"\n" +#~ " " + +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Accept level L%(tcl)s clearance and " +#~ "responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \"Accetta l'autorizzazione di livello L%(tcl)s e " +#~ "la responsabilità\"\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " Add setting\n" +#~ " " +#~ msgid_plural "" +#~ "\n" +#~ " Add settings\n" +#~ " " +#~ msgstr[0] "" +#~ "\n" +#~ " aggiungi impostazione\n" +#~ " " +#~ msgstr[1] "" +#~ "\n" +#~ " aggiungere impostazioni\n" +#~ " " + +#~ msgid "Organization code(s) for raw does not exist in our database" +#~ msgstr "" +#~ "Il codice organizzazione(i) per il file raw non esiste nel nostro database" + #~ msgid "Scan OOI" #~ msgstr "Scansione OOI" diff --git a/rocky/rocky/locale/nl/LC_MESSAGES/django.po b/rocky/rocky/locale/nl/LC_MESSAGES/django.po index 430b33f339b..c03d9c7f593 100644 --- a/rocky/rocky/locale/nl/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/nl/LC_MESSAGES/django.po @@ -5,21 +5,22 @@ # Weblate Translation Memory , 2023. # 跨性别 , 2023. # Madelon Dohmen , 2023, 2024. +# PAUL MICHIEL VAN DER BLONK , 2024. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" -"PO-Revision-Date: 2024-01-10 15:06+0000\n" -"Last-Translator: Madelon Dohmen \n" -"Language-Team: Dutch \n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" +"PO-Revision-Date: 2024-02-21 19:02+0000\n" +"Last-Translator: PAUL MICHIEL VAN DER BLONK \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.4-dev\n" +"X-Generator: Weblate 5.5-dev\n" #: account/admin.py msgid "Permissions" @@ -31,6 +32,7 @@ msgstr "Belangrijke datums" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html #: rocky/templates/organizations/organization_settings.html @@ -304,6 +306,10 @@ msgstr "" msgid "date joined" msgstr "startdatum" +#: account/models.py +msgid "name" +msgstr "" + #: account/templates/account_detail.html account/views/account.py msgid "Account details" msgstr "Account gegevens" @@ -352,8 +358,8 @@ msgid "" " " msgstr "" "\n" -" U heeft geen vrijwaring om objecten te " -"scannen.
    \n" +" U heeft geen vrijwaring om objecten te scannen." +"
    \n" " Neem contact op met de beheerder om u het nodige " "vrijwaringsniveau te geven.\n" " " @@ -378,14 +384,9 @@ msgstr "" #, python-format msgid "" "\n" -" \"Withdraw acceptance of level L%(acl)s " -"clearance and responsibility\"\n" +" Withdraw L%(acl)s clearance and responsibility\n" " " msgstr "" -"\n" -" \"Acceptatie van vrijwaringsniveau L%(acl)s en " -"verantwoordelijkheid intrekken\"\n" -" " #: account/templates/account_detail.html msgid "Explanation OOI clearance" @@ -401,21 +402,16 @@ msgid "" msgstr "" "U krijgt vrijwaring voor niveau L%(tcl)s van uw beheerder. Voordat u OOI-" "vrijwaringsniveaus kunt wijzigen tot dit niveau, moet u deze toestemming " -"accepteren. Onthoud: met grote macht komt grote " -"verantwoordelijkheid." +"accepteren. Onthoud: met grote macht komt grote verantwoordelijkheid." +"" #: account/templates/account_detail.html #, python-format msgid "" "\n" -" \"Accept level L%(tcl)s clearance and " -"responsibility\"\n" +" Accept level L%(tcl)s clearance and responsibility\n" " " msgstr "" -"\n" -" \"Accepteer vrijwaringsniveau L%(tcl)s en " -"verantwoordelijkheid\"\n" -" " #: account/templates/password_reset.html msgid "Use the form below to reset your password." @@ -424,13 +420,13 @@ msgstr "" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Back" -msgstr "Terug" +msgid "Send" +msgstr "Verstuur" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Send" -msgstr "Verstuur" +msgid "Back" +msgstr "Terug" #: account/templates/password_reset_confirm.html msgid "Confirm reset password" @@ -508,14 +504,14 @@ msgstr "" msgid "Please contact the system administrator." msgstr "Neem contact op met de systeembeheerder." -#: account/templates/recover_email.html -msgid "Back to Home" -msgstr "Terug naar Home" - #: account/templates/recover_email.html msgid "Back to login" msgstr "Terug naar login" +#: account/templates/recover_email.html +msgid "Back to Home" +msgstr "Terug naar Home" + #: account/templates/registration_email.html #, python-format msgid "" @@ -722,7 +718,7 @@ msgstr "Effect" #: fmea/forms.py msgid "Severity Level" -msgstr "Beveilgingsnivo" +msgstr "Beveiligingsnivo" #: fmea/forms.py msgid "Name a possible effect of any type of failure mode that can occur." @@ -1545,7 +1541,6 @@ msgstr "Plug-in" #: katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html -#: reports/report_types/dns_report/report.html #: rocky/templates/oois/ooi_delete.html msgid "Value" msgstr "Waarde" @@ -1783,38 +1778,32 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting\n" +" Add setting and enable boefje\n" " " msgid_plural "" "\n" -" Add settings\n" +" Add settings and enable boefje\n" " " msgstr[0] "" "\n" -" Instelling toevoegen\n" +" Instelling toevoegen en Boefje aanzetten\n" " " msgstr[1] "" "\n" -" Insellingen toevoegen\n" +" Instellingen toevoegen en Boefje aanzetten\n" " " #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting and enable boefje\n" -" " +" Add setting\n" +" " msgid_plural "" "\n" -" Add settings and enable boefje\n" -" " +" Add settings\n" +" " msgstr[0] "" -"\n" -" Instelling toevoegen en Boefje aanzetten\n" -" " msgstr[1] "" -"\n" -" Instellingen toevoegen en Boefje aanzetten\n" -" " #: katalogus/templates/plugin_settings_delete.html msgid "Delete settings" @@ -2249,14 +2238,14 @@ msgstr "Admin details" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -msgid "Go back to previous step" -msgstr "Ga terug naar vorige stap" +msgid "Skip this step" +msgstr "Sla over" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -msgid "Skip this step" -msgstr "Sla over" +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" +msgstr "Ga terug naar vorige stap" #: onboarding/templates/account/step_5_account_setup_red_teamer.html msgid "Red teamer account setup" @@ -2403,6 +2392,7 @@ msgstr "" "heeft gevonden en mogelijke oplossingen." #: onboarding/templates/step_2a_choose_report_info.html +#: reports/report_types/dns_report/report.html msgid "Data" msgstr "Data" @@ -3082,6 +3072,10 @@ msgstr "Appendix" msgid "Selected objects" msgstr "Geselecteerde objecten" +#: reports/report_types/aggregate_organisation_report/appendix.html +msgid "Currently filtered on" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/partials/report_sidemenu.html #: reports/templates/summary/report_summary.html @@ -3233,6 +3227,11 @@ msgstr "server" msgid "OpenKAT Aggregate Report" msgstr "OpenKAT Geaggregeerd Rapport" +#: reports/report_types/aggregate_organisation_report/introduction.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "Exporteer" + #: reports/report_types/aggregate_organisation_report/introduction.html #: rocky/templates/oois/ooi_report.html #: rocky/templates/partials/findings_list_toolbar.html @@ -3248,11 +3247,15 @@ msgid "This is the OpenKAT report for organization" msgstr "Dit is het OpenKAT rapport voor organisatie" #: reports/report_types/aggregate_organisation_report/introduction.html -#: reports/report_types/aggregate_organisation_report/report_design.html +#: reports/templates/partials/report_header.html +msgid "Created with data from" +msgstr "" + +#: reports/report_types/aggregate_organisation_report/introduction.html #: reports/report_types/multi_organization_report/introduction.html #: reports/templates/partials/report_header.html -msgid "Observed at:" -msgstr "Gezien op:" +msgid "Created on" +msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html #: reports/report_types/aggregate_organisation_report/report_design.html @@ -3379,6 +3382,10 @@ msgstr "Hostnamen gescand" msgid "Terms in report" msgstr "Termen in rapport" +#: reports/report_types/aggregate_organisation_report/report_design.html +msgid "Observed at:" +msgstr "Gezien op:" + #: reports/report_types/aggregate_organisation_report/report_design.html #: reports/report_types/vulnerability_report/report.html msgid "vulnerabilities on this system" @@ -3574,43 +3581,40 @@ msgstr "" "op en beheren deze met behulp van een gestandaardiseerd formaat." #: reports/report_types/dns_report/report.html -msgid "IP address lookup" -msgstr "Ip-adres opzoeken" - -#: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "warning" -msgstr "waarschuwing" +msgid "Records found" +msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "Warning" -msgstr "Waarschuwing" +msgid "" +"The table below gives an overview of the DNS records that were found for the " +"abovementioned DNSZone." +msgstr "" #: reports/report_types/dns_report/report.html msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" -"U heeft minder dan één webserver die bereikbaar is over IPv6. Hiermee worden " -"de standaarden die internet.nl heeft aanbevolen niet " -"nageleefd." #: reports/report_types/dns_report/report.html -msgid "Other records found" -msgstr "Andere gevonden records" +msgid "All existing DNS record types can be found here" +msgstr "" #: reports/report_types/dns_report/report.html msgid "Record" msgstr "Record" #: reports/report_types/dns_report/report.html -msgid "Found by" -msgstr "Gevonden door" +msgid "TTL" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "minutes" +msgstr "" #: reports/report_types/dns_report/report.html msgid "Security measures" @@ -3726,6 +3730,10 @@ msgstr "Download rapport" msgid "This is the OpenKAT Sector rapport." msgstr "Dit is het OpenKAT Sector Rapport." +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "Deze sector bevat" @@ -3817,6 +3825,14 @@ msgstr "Voorval" msgid "Multi Organization Report" msgstr "Multi-Organisatie Rapport" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -4226,18 +4242,39 @@ msgstr "Geen objecten gevonden." msgid "Go to the object page" msgstr "Ga naar de objectpagina" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "Objecten:" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "Vrijwaringstype" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" -msgstr "Rapport opstellen" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" +msgstr "Doorgaan met selectie" #: reports/templates/partials/report_setup_scan.html #: rocky/views/organization_add.py @@ -4341,6 +4378,10 @@ msgid_plural "Selected objects" msgstr[0] "Geselecteerd object" msgstr[1] "Geselecteerde objecten" +#: reports/templates/partials/report_types_selection.html +msgid "You have selected all objects in previous step." +msgstr "" + #: reports/templates/partials/report_types_selection.html msgid "Available report types" msgstr "Beschikbare rapporttypes" @@ -4353,10 +4394,6 @@ msgstr "Alle rapporten die beschikbaar zijn voor uw selectie." msgid "Toggle all report types" msgstr "Selecteer alle rapporttypes" -#: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" -msgstr "Doorgaan met selectie" - #: reports/templates/summary/report_summary.html msgid "Selected Plugins for scans" msgstr "Geselecteerde plug-ins voor scans" @@ -4393,6 +4430,17 @@ msgstr "Selecteer minstens één OOI om verder te gaan." msgid "Select at least one report type to proceed." msgstr "Selecteer minstens één rapporttype om door te gaan." +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -4411,6 +4459,10 @@ msgstr "Selecteer OOI's" msgid "Date" msgstr "Datum" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4675,7 +4727,7 @@ msgstr "Diepte van de boom." msgid "Only CSV file supported" msgstr "Alleen CSV ondersteund" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "Bestand kon niet gedecodeerd worden" @@ -4715,10 +4767,6 @@ msgstr "Objecttype" msgid "Choose a type of which objects are added." msgstr "Selecteer een type waarvan objecten worden toegevoegd." -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "Organisatiecode in CSV bestaat niet in onze database" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "Mime-types" @@ -5128,6 +5176,18 @@ msgstr "Welkom" msgid "User overview:" msgstr "Gebruikersoverzicht:" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "waarschuwing" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "Waarschuwing" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "Organisatiecode mist" @@ -6251,11 +6311,6 @@ msgstr "Objecten scannen" msgid "Upload CSV" msgstr "Upload een CSV" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "Exporteer" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "Sla op als JSON" @@ -6298,7 +6353,7 @@ msgstr "Totaal aantal voorvallen" #: rocky/templates/partials/ooi_report_severity_totals_table.html msgid "Total per severity overview:" -msgstr "" +msgstr "Overzicht totalen per ernst:" #: rocky/templates/partials/ooi_report_severity_totals_table.html msgid "Unique" @@ -6670,15 +6725,15 @@ msgstr "Print deze tokens en bewaar ze op een veilige plek." msgid "You don't have any backup codes yet." msgstr "U heeft nog geen backup codes." +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "Tokens Genereren" + #: rocky/templates/two_factor/core/backup_tokens.html #: rocky/templates/two_factor/core/setup_complete.html msgid "Back to Account Security" msgstr "Terug naar Accountbeveiliging" -#: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" -msgstr "Tokens Genereren" - #: rocky/templates/two_factor/core/login.html msgid "You are logged in." msgstr "U bent ingelogd." @@ -6934,6 +6989,10 @@ msgstr "Verfraaid" msgid "Indemnification successfully set." msgstr "Vrijwaringsniveau ingesteld." +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "Kan datum niet lezen. Huidige datum wordt gebruikt." @@ -7275,6 +7334,13 @@ msgstr "" "Voor IPAddressV4- en IPAddressV6-objecttypes is een kolom 'adres' vereist, " "optioneel wordt een tweede kolom 'netwerk' ondersteund " +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "Object(en) konden niet worden aangemaakt voor rijnummer(s): " @@ -7292,6 +7358,70 @@ msgstr "Het ruw bestand kon niet geupload worden naar Bytes: status code %s" msgid "Raw file successfully added." msgstr "Ruw bestand succesvol toegevoegd." +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Withdraw acceptance of level L%(acl)s " +#~ "clearance and responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \"Acceptatie van vrijwaringsniveau L%(acl)s " +#~ "en verantwoordelijkheid intrekken\"\n" +#~ " " + +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Accept level L%(tcl)s clearance and " +#~ "responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ " \"Accepteer vrijwaringsniveau L%(tcl)s en " +#~ "verantwoordelijkheid\"\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " Add setting\n" +#~ " " +#~ msgid_plural "" +#~ "\n" +#~ " Add settings\n" +#~ " " +#~ msgstr[0] "" +#~ "\n" +#~ " Instelling toevoegen\n" +#~ " " +#~ msgstr[1] "" +#~ "\n" +#~ " Insellingen toevoegen\n" +#~ " " + +#~ msgid "IP address lookup" +#~ msgstr "Ip-adres opzoeken" + +#~ msgid "" +#~ "You have less than one webserver that is reachable over IPv6, which is " +#~ "not in compliance to internet.nl standards." +#~ msgstr "" +#~ "U heeft minder dan één webserver die bereikbaar is over IPv6. Hiermee " +#~ "worden de standaarden die internet.nl heeft aanbevolen niet nageleefd." + +#~ msgid "Other records found" +#~ msgstr "Andere gevonden records" + +#~ msgid "Found by" +#~ msgstr "Gevonden door" + +#~ msgid "Setup report" +#~ msgstr "Rapport opstellen" + +#~ msgid "Organization code(s) for raw does not exist in our database" +#~ msgstr "Organisatiecode in CSV bestaat niet in onze database" + #~ msgid "Scan OOI" #~ msgstr "Scan OOI" diff --git a/rocky/rocky/locale/pap/LC_MESSAGES/django.po b/rocky/rocky/locale/pap/LC_MESSAGES/django.po index 2b7b220cf0d..a4e98e8c530 100644 --- a/rocky/rocky/locale/pap/LC_MESSAGES/django.po +++ b/rocky/rocky/locale/pap/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-29 19:01+0000\n" +"POT-Creation-Date: 2024-02-19 15:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,6 +22,7 @@ msgstr "Fechanan importante" #: account/forms/account_setup.py katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html +#: reports/report_types/dns_report/report.html #: reports/report_types/tls_report/report.html #: rocky/templates/organizations/organization_list.html #: rocky/templates/organizations/organization_settings.html @@ -294,6 +295,10 @@ msgstr "" msgid "date joined" msgstr "fecha di registro" +#: account/models.py +msgid "name" +msgstr "" + #: account/templates/account_detail.html account/views/account.py msgid "Account details" msgstr "Detayenan di kuenta" @@ -367,13 +372,9 @@ msgstr "" #, python-format msgid "" "\n" -" \"Withdraw acceptance of level L%(acl)s " -"clearance and responsibility\"\n" +" Withdraw L%(acl)s clearance and responsibility\n" " " msgstr "" -"\n" -"\"Retirá aseptashon di nivel di autorisashon L%(acl)s i responsabilidat\"\n" -" " #: account/templates/account_detail.html msgid "Explanation OOI clearance" @@ -396,13 +397,9 @@ msgstr "" #, python-format msgid "" "\n" -" \"Accept level L%(tcl)s clearance and " -"responsibility\"\n" +" Accept level L%(tcl)s clearance and responsibility\n" " " msgstr "" -"\n" -"\"Aseptá nivel di autorisashon L%(tcl)s i responsabilidat\"\n" -" " #: account/templates/password_reset.html msgid "Use the form below to reset your password." @@ -410,13 +407,13 @@ msgstr "Uza e formulario abou pa konfirmá bo password resèt" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Back" -msgstr "Bai bèk" +msgid "Send" +msgstr "Mánda" #: account/templates/password_reset.html #: account/templates/password_reset_confirm.html -msgid "Send" -msgstr "Mánda" +msgid "Back" +msgstr "Bai bèk" #: account/templates/password_reset_confirm.html msgid "Confirm reset password" @@ -491,14 +488,14 @@ msgstr "" msgid "Please contact the system administrator." msgstr "Por fabor tuma kontakto ku e administradó di sistema." -#: account/templates/recover_email.html -msgid "Back to Home" -msgstr "Bèk na Home" - #: account/templates/recover_email.html msgid "Back to login" msgstr "Bèk na login" +#: account/templates/recover_email.html +msgid "Back to Home" +msgstr "Bèk na Home" + #: account/templates/registration_email.html #, python-format msgid "" @@ -1524,7 +1521,6 @@ msgstr "Plugin" #: katalogus/templates/katalogus_settings.html #: katalogus/templates/plugin_settings_list.html -#: reports/report_types/dns_report/report.html #: rocky/templates/oois/ooi_delete.html msgid "Value" msgstr "Balor" @@ -1770,38 +1766,32 @@ msgstr[1] "" #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting\n" +" Add setting and enable boefje\n" " " msgid_plural "" "\n" -" Add settings\n" +" Add settings and enable boefje\n" " " msgstr[0] "" "\n" -" Añadi setting\n" +" Pone setting i sende boefje\n" " " msgstr[1] "" "\n" -" Añadi settings\n" +" Pone settings i sende boefje\n" " " #: katalogus/templates/plugin_settings_add.html msgid "" "\n" -" Add setting and enable boefje\n" -" " +" Add setting\n" +" " msgid_plural "" "\n" -" Add settings and enable boefje\n" -" " +" Add settings\n" +" " msgstr[0] "" -"\n" -" Pone setting i sende boefje\n" -" " msgstr[1] "" -"\n" -" Pone settings i sende boefje\n" -" " #: katalogus/templates/plugin_settings_delete.html msgid "Delete settings" @@ -2232,14 +2222,14 @@ msgstr "Admin detayes" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -msgid "Go back to previous step" -msgstr "Bai bèk na e stèp anterior" +msgid "Skip this step" +msgstr "Salta e stèp aki" #: onboarding/templates/account/step_4_account_setup_admin.html #: onboarding/templates/account/step_5_account_setup_red_teamer.html -msgid "Skip this step" -msgstr "Salta e stèp aki" +#: onboarding/templates/account/step_6_account_setup_client.html +msgid "Go back to previous step" +msgstr "Bai bèk na e stèp anterior" #: onboarding/templates/account/step_5_account_setup_red_teamer.html msgid "Red teamer account setup" @@ -2388,6 +2378,7 @@ msgstr "" "informashon detaya di tur loke KAT a enkontra i solushonanan posibel." #: onboarding/templates/step_2a_choose_report_info.html +#: reports/report_types/dns_report/report.html msgid "Data" msgstr "Data" @@ -3061,6 +3052,10 @@ msgstr "" msgid "Selected objects" msgstr "" +#: reports/report_types/aggregate_organisation_report/appendix.html +msgid "Currently filtered on" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/partials/report_sidemenu.html #: reports/templates/summary/report_summary.html @@ -3204,6 +3199,11 @@ msgstr "" msgid "OpenKAT Aggregate Report" msgstr "" +#: reports/report_types/aggregate_organisation_report/introduction.html +#: rocky/templates/partials/ooi_list_toolbar.html +msgid "Export" +msgstr "Exportá" + #: reports/report_types/aggregate_organisation_report/introduction.html #: rocky/templates/oois/ooi_report.html #: rocky/templates/partials/findings_list_toolbar.html @@ -3219,10 +3219,14 @@ msgid "This is the OpenKAT report for organization" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html -#: reports/report_types/aggregate_organisation_report/report_design.html +#: reports/templates/partials/report_header.html +msgid "Created with data from" +msgstr "" + +#: reports/report_types/aggregate_organisation_report/introduction.html #: reports/report_types/multi_organization_report/introduction.html #: reports/templates/partials/report_header.html -msgid "Observed at:" +msgid "Created on" msgstr "" #: reports/report_types/aggregate_organisation_report/introduction.html @@ -3336,6 +3340,10 @@ msgstr "" msgid "Terms in report" msgstr "" +#: reports/report_types/aggregate_organisation_report/report_design.html +msgid "Observed at:" +msgstr "" + #: reports/report_types/aggregate_organisation_report/report_design.html #: reports/report_types/vulnerability_report/report.html msgid "vulnerabilities on this system" @@ -3485,31 +3493,27 @@ msgid "" msgstr "" #: reports/report_types/dns_report/report.html -msgid "IP address lookup" +msgid "Records found" msgstr "" #: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "warning" -msgstr "advertensia" - -#: reports/report_types/dns_report/report.html -#: rocky/templates/dashboard_redteam.html -#: rocky/templates/partials/notifications_block.html -#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html -msgid "Warning" -msgstr "Advertensia" +msgid "" +"The table below gives an overview of the DNS records that were found for the " +"abovementioned DNSZone." +msgstr "" #: reports/report_types/dns_report/report.html msgid "" -"You have less than one webserver that is reachable over IPv6, which is " -"not in compliance to internet.nl standards." +"\n" +" Disclaimer:\n" +" Not all DNSRecords are parsed in OpenKAT.\n" +" DNS record types that are parsed and could be displayed " +"in the table are:\n" +" " msgstr "" #: reports/report_types/dns_report/report.html -msgid "Other records found" +msgid "All existing DNS record types can be found here" msgstr "" #: reports/report_types/dns_report/report.html @@ -3517,7 +3521,11 @@ msgid "Record" msgstr "" #: reports/report_types/dns_report/report.html -msgid "Found by" +msgid "TTL" +msgstr "" + +#: reports/report_types/dns_report/report.html +msgid "minutes" msgstr "" #: reports/report_types/dns_report/report.html @@ -3628,6 +3636,10 @@ msgstr "" msgid "This is the OpenKAT Sector rapport." msgstr "" +#: reports/report_types/multi_organization_report/introduction.html +msgid "Created with date from" +msgstr "" + #: reports/report_types/multi_organization_report/introduction.html msgid "This sector contains" msgstr "" @@ -3717,6 +3729,14 @@ msgstr "Occurencia" msgid "Multi Organization Report" msgstr "" +#: reports/report_types/multi_organization_report/summary.html +msgid "Best scoring security check" +msgstr "" + +#: reports/report_types/multi_organization_report/summary.html +msgid "Worst scoring security check" +msgstr "" + #: reports/report_types/multi_organization_report/vulnerabilities.html msgid "" "Vulnerabilities found are grouped per system. Here, we only consider CVE " @@ -4105,17 +4125,38 @@ msgstr "" msgid "Go to the object page" msgstr "" +#: reports/templates/partials/report_ooi_list.html +msgid "explanation select all" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Explanation 'Continue with all OOIs'" +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +#, python-format +msgid "" +"This option will select all OOIs (+ current filters) for %(organization)s " +"organization." +msgstr "" + +#: reports/templates/partials/report_ooi_list.html +msgid "Continue with all OOIs" +msgstr "" + #: reports/templates/partials/report_ooi_list.html #: reports/templates/summary/ooi_selection.html msgid "Objects:" msgstr "" #: reports/templates/partials/report_ooi_list.html +#: reports/templates/summary/ooi_selection.html msgid "Clearance type" msgstr "" #: reports/templates/partials/report_ooi_list.html -msgid "Setup report" +#: reports/templates/partials/report_types_selection.html +msgid "Continue with selection" msgstr "" #: reports/templates/partials/report_setup_scan.html @@ -4207,19 +4248,19 @@ msgstr[0] "" msgstr[1] "" #: reports/templates/partials/report_types_selection.html -msgid "Available report types" +msgid "You have selected all objects in previous step." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "All report types that are available for your selection." +msgid "Available report types" msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Toggle all report types" +msgid "All report types that are available for your selection." msgstr "" #: reports/templates/partials/report_types_selection.html -msgid "Continue with selection" +msgid "Toggle all report types" msgstr "" #: reports/templates/summary/report_summary.html @@ -4258,6 +4299,17 @@ msgstr "" msgid "Select at least one report type to proceed." msgstr "" +#: reports/views/aggregate_report.py reports/views/generate_report.py +#, python-format +msgid "" +"No data could be found for %(oois)s. Object(s) did not exist on %(date)s." +msgstr "" + +#: reports/views/base.py +#, python-format +msgid "Report type '%s' does not exist." +msgstr "" + #: reports/views/generate_report.py msgid "This report may not show all the data as some plugins are not enabled." msgstr "" @@ -4274,6 +4326,10 @@ msgstr "" msgid "Date" msgstr "Fecha" +#: tools/forms/base.py +msgid "The selected date is in the future. Please select a different date." +msgstr "" + #: tools/forms/boefje.py msgid "" "Not all required boefjes are selected. Please select all required boefjes." @@ -4539,7 +4595,7 @@ msgstr "Profundidát di mapa" msgid "Only CSV file supported" msgstr "Únikamente CSV ta posibel" -#: tools/forms/upload_csv.py tools/forms/upload_raw.py +#: tools/forms/upload_csv.py msgid "File could not be decoded" msgstr "No por decodifiká e archivo" @@ -4579,10 +4635,6 @@ msgstr "Tipo di opheto" msgid "Choose a type of which objects are added." msgstr "Eskohé un tipo kaminda ophetonan lo wordu agrega na dje." -#: tools/forms/upload_raw.py -msgid "Organization code(s) for raw does not exist in our database" -msgstr "Codigo di organisashon den e CSV no ta èksisti den nos database" - #: tools/forms/upload_raw.py msgid "Mime types" msgstr "Mime types" @@ -4973,6 +5025,18 @@ msgstr "Bon Biní" msgid "User overview:" msgstr "Resúmen di kliente:" +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "warning" +msgstr "advertensia" + +#: rocky/templates/dashboard_redteam.html +#: rocky/templates/partials/notifications_block.html +#: rocky/templates/partials/ooi_report_findings_block_table_expanded_row.html +msgid "Warning" +msgstr "Advertensia" + #: rocky/templates/dashboard_redteam.html msgid "Organization code missing" msgstr "Falta e codigo di organisashon" @@ -6097,11 +6161,6 @@ msgstr "Skèn pa ophetonan" msgid "Upload CSV" msgstr "Subi CSV" -#: rocky/templates/partials/ooi_list_toolbar.html -#: reports/report_types/aggregate_organisation_report/introduction.html -msgid "Export" -msgstr "Exportá" - #: rocky/templates/partials/ooi_list_toolbar.html msgid "Download as JSON" msgstr "Download komo JSON" @@ -6514,15 +6573,15 @@ msgstr "Print e tokens nan aki i warda esakinan na un kaminda sigur. " msgid "You don't have any backup codes yet." msgstr "Ahinda bo no tin ningun backup tokens." +#: rocky/templates/two_factor/core/backup_tokens.html +msgid "Generate Tokens" +msgstr "Generá Tokens" + #: rocky/templates/two_factor/core/backup_tokens.html #: rocky/templates/two_factor/core/setup_complete.html msgid "Back to Account Security" msgstr "Bai bèk na Account Seguridat" -#: rocky/templates/two_factor/core/backup_tokens.html -msgid "Generate Tokens" -msgstr "Generá Tokens" - #: rocky/templates/two_factor/core/login.html msgid "You are logged in." msgstr "Bo ta logged in" @@ -6776,6 +6835,10 @@ msgstr "Bunitifiká" msgid "Indemnification successfully set." msgstr "Indemnizashon pone ku èxito." +#: rocky/views/mixins.py +msgid "The selected date is in the future." +msgstr "" + #: rocky/views/mixins.py msgid "Can not parse date, falling back to show current date." msgstr "" @@ -7112,6 +7175,13 @@ msgstr "" "Pa tipo di ophetonan IPAddressV4 and IPAddressV6, un kòlòm di 'address' ta " "requerí, opcionalmente un siguinte kòlòm 'network' ta atmiti " +#: rocky/views/upload_csv.py +msgid "" +"Clearance levels can be controlled by a column 'clearance' taking numerical " +"values 0, 1, 2, 3, and 4 for the corresponding clearance level (other values " +"are ignored) " +msgstr "" + #: rocky/views/upload_csv.py msgid "Object(s) could not be created for row number(s): " msgstr "Opheto(nan) no por a wordu krea pa e liña(nan): " @@ -7129,6 +7199,49 @@ msgstr "No por a subi e arkivo na Bytes: status code %s" msgid "Raw file successfully added." msgstr "Arkivo crudo añadi ku èxito." +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Withdraw acceptance of level L%(acl)s " +#~ "clearance and responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "\"Retirá aseptashon di nivel di autorisashon L%(acl)s i " +#~ "responsabilidat\"\n" +#~ " " + +#, python-format +#~ msgid "" +#~ "\n" +#~ " \"Accept level L%(tcl)s clearance and " +#~ "responsibility\"\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "\"Aseptá nivel di autorisashon L%(tcl)s i responsabilidat\"\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ " Add setting\n" +#~ " " +#~ msgid_plural "" +#~ "\n" +#~ " Add settings\n" +#~ " " +#~ msgstr[0] "" +#~ "\n" +#~ " Añadi setting\n" +#~ " " +#~ msgstr[1] "" +#~ "\n" +#~ " Añadi settings\n" +#~ " " + +#~ msgid "Organization code(s) for raw does not exist in our database" +#~ msgstr "Codigo di organisashon den e CSV no ta èksisti den nos database" + #~ msgid "Scan OOI" #~ msgstr "Skèn OOI" From 46a154468aef0d93538dbd72b5fcb277e62e7644 Mon Sep 17 00:00:00 2001 From: ammar92 Date: Thu, 22 Feb 2024 10:18:37 +0100 Subject: [PATCH 62/85] Remove FMEA (#2539) Co-authored-by: Jeroen Dekkers --- .pre-commit-config.yaml | 1 - octopoes/tests/robot/05_bits.robot | 12 +- rocky/MANIFEST.in | 2 - rocky/assets/css/components/fmea.scss | 8 - rocky/assets/css/main.scss | 1 - ...004_remove_failuremode_effect_and_more.sql | 24 + rocky/fmea/__init__.py | 0 rocky/fmea/admin.py | 39 - rocky/fmea/apps.py | 9 - rocky/fmea/forms.py | 180 ----- rocky/fmea/migrations/0001_initial.py | 2 - ...0004_remove_failuremode_effect_and_more.py | 32 + rocky/fmea/models.py | 99 --- rocky/fmea/signals.py | 54 -- .../fmea/fmea_department_heatmap.html | 44 -- ...a_failure_mode_affected_object_detail.html | 43 -- ...mea_failure_mode_affected_object_form.html | 35 - ...mea_failure_mode_affected_object_list.html | 51 -- .../fmea/fmea_failure_mode_departments.html | 37 - .../fmea/fmea_failure_mode_detail.html | 71 -- .../fmea/fmea_failure_mode_effect_detail.html | 39 - .../fmea/fmea_failure_mode_effect_form.html | 30 - .../fmea/fmea_failure_mode_effect_list.html | 48 -- .../fmea/fmea_failure_mode_form.html | 36 - .../fmea/fmea_failure_mode_list.html | 83 -- .../fmea/fmea_failure_mode_report.html | 59 -- rocky/fmea/templates/fmea/fmea_index.html | 65 -- rocky/fmea/tools.py | 63 -- rocky/fmea/urls.py | 87 --- rocky/fmea/views/__init__.py | 5 - rocky/fmea/views/fmea_affected_objects.py | 144 ---- rocky/fmea/views/fmea_analytics.py | 89 --- rocky/fmea/views/fmea_failure_mode.py | 115 --- rocky/fmea/views/fmea_failure_mode_effect.py | 114 --- rocky/fmea/views/view_helpers.py | 36 - rocky/fmea/views/views.py | 11 - rocky/poetry.lock | 311 +------- rocky/pyproject.toml | 5 - rocky/requirements-dev.txt | 112 +-- rocky/requirements.txt | 163 +--- rocky/rocky/locale/django.pot | 727 ++---------------- rocky/rocky/templates/dashboard_redteam.html | 3 - rocky/tools/models.py | 1 - 43 files changed, 142 insertions(+), 2948 deletions(-) delete mode 100644 rocky/assets/css/components/fmea.scss create mode 100644 rocky/export_migrations/0099.fmea.0004_remove_failuremode_effect_and_more.sql delete mode 100644 rocky/fmea/__init__.py delete mode 100644 rocky/fmea/admin.py delete mode 100644 rocky/fmea/apps.py delete mode 100644 rocky/fmea/forms.py create mode 100644 rocky/fmea/migrations/0004_remove_failuremode_effect_and_more.py delete mode 100644 rocky/fmea/models.py delete mode 100644 rocky/fmea/signals.py delete mode 100644 rocky/fmea/templates/fmea/fmea_department_heatmap.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_form.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_list.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_departments.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_detail.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_effect_detail.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_effect_form.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_effect_list.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_form.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_list.html delete mode 100644 rocky/fmea/templates/fmea/fmea_failure_mode_report.html delete mode 100644 rocky/fmea/templates/fmea/fmea_index.html delete mode 100644 rocky/fmea/tools.py delete mode 100644 rocky/fmea/urls.py delete mode 100644 rocky/fmea/views/__init__.py delete mode 100644 rocky/fmea/views/fmea_affected_objects.py delete mode 100644 rocky/fmea/views/fmea_analytics.py delete mode 100644 rocky/fmea/views/fmea_failure_mode.py delete mode 100644 rocky/fmea/views/fmea_failure_mode_effect.py delete mode 100644 rocky/fmea/views/view_helpers.py delete mode 100644 rocky/fmea/views/views.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 726045caa10..af16be28370 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -85,7 +85,6 @@ repos: ^keiko/templates | ^mula/whitelist\.py$ | ^octopoes/ | - ^rocky/fmea/ | ^rocky/whitelist\.py$ | /tests/ | docs/source/conf\.py$ | diff --git a/octopoes/tests/robot/05_bits.robot b/octopoes/tests/robot/05_bits.robot index 907c5701b5c..3b425887120 100644 --- a/octopoes/tests/robot/05_bits.robot +++ b/octopoes/tests/robot/05_bits.robot @@ -15,7 +15,15 @@ Bit With Scan Level 1 Declare Scan Profile Hostname|internet|example.com 1 Await Sync Wait Until Keyword Succeeds 60s 1s Object List Should Contain KATFindingType|KAT-NXDOMAIN - Wait Until Keyword Succeeds 60s 1s Object List Should Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN + Wait Until Keyword Succeeds + ... 60s + ... 1s + ... Object List Should Contain + ... Finding|Hostname|internet|example.com|KAT-NXDOMAIN Declare Scan Profile Hostname|internet|example.com 0 Await Sync - Wait Until Keyword Succeeds 60s 1s Object List Should Not Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN + Wait Until Keyword Succeeds + ... 60s + ... 1s + ... Object List Should Not Contain + ... Finding|Hostname|internet|example.com|KAT-NXDOMAIN diff --git a/rocky/MANIFEST.in b/rocky/MANIFEST.in index d29b9c79815..10d5d594c57 100644 --- a/rocky/MANIFEST.in +++ b/rocky/MANIFEST.in @@ -4,8 +4,6 @@ recursive-include rocky/templates *.html recursive-include rocky/templates *.txt recursive-include rocky/locale *.mo recursive-include rocky/locale *.po -recursive-include fmea/templates *.html -recursive-include fmea/templates *.txt recursive-include katalogus/templates *.html recursive-include katalogus/templates *.txt recursive-include account/templates *.html diff --git a/rocky/assets/css/components/fmea.scss b/rocky/assets/css/components/fmea.scss deleted file mode 100644 index 0d7c93d6649..00000000000 --- a/rocky/assets/css/components/fmea.scss +++ /dev/null @@ -1,8 +0,0 @@ -.affected-objects { - span:not(:last-child) { - &::after { - content: "-"; - display: inline-block; - } - } -} diff --git a/rocky/assets/css/main.scss b/rocky/assets/css/main.scss index b424453c0cf..e153ccba000 100644 --- a/rocky/assets/css/main.scss +++ b/rocky/assets/css/main.scss @@ -31,7 +31,6 @@ @import "components/dropdown"; @import "components/dropdown-list"; @import "components/filter"; -@import "components/fmea"; @import "components/footer-logo"; @import "components/footer"; @import "components/form-inline"; diff --git a/rocky/export_migrations/0099.fmea.0004_remove_failuremode_effect_and_more.sql b/rocky/export_migrations/0099.fmea.0004_remove_failuremode_effect_and_more.sql new file mode 100644 index 00000000000..e55572e2c04 --- /dev/null +++ b/rocky/export_migrations/0099.fmea.0004_remove_failuremode_effect_and_more.sql @@ -0,0 +1,24 @@ +-- +-- Remove field effect from failuremode +-- +DROP TABLE "fmea_failuremode_effect" CASCADE; +-- +-- Remove field failure_mode from failuremodeaffectedobject +-- +ALTER TABLE "fmea_failuremodeaffectedobject" DROP COLUMN "failure_mode_id" CASCADE; +-- +-- Delete model FailureModeTreeObject +-- +DROP TABLE "fmea_failuremodetreeobject" CASCADE; +-- +-- Delete model FailureMode +-- +DROP TABLE "fmea_failuremode" CASCADE; +-- +-- Delete model FailureModeAffectedObject +-- +DROP TABLE "fmea_failuremodeaffectedobject" CASCADE; +-- +-- Delete model FailureModeEffect +-- +DROP TABLE "fmea_failuremodeeffect" CASCADE; diff --git a/rocky/fmea/__init__.py b/rocky/fmea/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/rocky/fmea/admin.py b/rocky/fmea/admin.py deleted file mode 100644 index 079069c003d..00000000000 --- a/rocky/fmea/admin.py +++ /dev/null @@ -1,39 +0,0 @@ -from django.contrib import admin - -from fmea.forms import ( - FailureModeAffectedObjectForm, - FailureModeEffectForm, - FailureModeForm, -) - -from .models import ( - FailureMode, - FailureModeAffectedObject, - FailureModeEffect, - FailureModeTreeObject, -) - - -@admin.register(FailureMode) -class FailureModeAdmin(admin.ModelAdmin): - form = FailureModeForm - - -@admin.register(FailureModeAffectedObject) -class FailureModeAffectedObjectAdmin(admin.ModelAdmin): - form = FailureModeAffectedObjectForm - - -@admin.register(FailureModeTreeObject) -class FailureModeTreeObjectAdmin(admin.ModelAdmin): - pass - - -@admin.register(FailureModeEffect) -class FailureModeEffectAdmin(admin.ModelAdmin): - list_display = ( - "effect", - "severity_level", - "id", - ) - form = FailureModeEffectForm diff --git a/rocky/fmea/apps.py b/rocky/fmea/apps.py deleted file mode 100644 index 2e72e07e103..00000000000 --- a/rocky/fmea/apps.py +++ /dev/null @@ -1,9 +0,0 @@ -from django.apps import AppConfig - - -class FMEAConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "fmea" - - def ready(self): - import fmea.signals # noqa: F401 diff --git a/rocky/fmea/forms.py b/rocky/fmea/forms.py deleted file mode 100644 index 7bf986cfb9b..00000000000 --- a/rocky/fmea/forms.py +++ /dev/null @@ -1,180 +0,0 @@ -from django import forms -from django.utils.translation import gettext_lazy as _ -from tools.forms.base import CheckboxGroup - -from fmea.models import ( - FailureMode, - FailureModeAffectedObject, - FailureModeEffect, -) -from fmea.tools import OOI_TYPES, calculate_risk_class, translated_blank_choice - - -class FailureModeForm(forms.ModelForm): - """ - With this form you can create or edit a failure mode for FMEA. - """ - - class Meta: - model = FailureMode - - fields = [ - "failure_mode", - "description", - "frequency_level", - "detectability_level", - "effect", - "risk_class", - ] - - labels = { - "failure mode": _("Failure mode"), - "description": _("Description"), - "frequency_level": _("Frequency Level"), - "detectability_level": _("Detectability Level"), - "effect": _("Effect(s)"), - } - - help_texts = { - "failure_mode": _("Describe in one sentence what type of failure mode you are creating."), - "description": _("Describe the failure mode in details."), - "frequency_level": _( - "From 1 to 5, how often does this failure mode occurs. 1: Almost unthinkable and 5: occurs daily." - ), - "detectability_level": _( - "Is this failure mode easy detectable? Give it a score from 1 to 5. 1: always detectable " - "and 5: almost undetectable." - ), - } - - widgets = { - "failure_mode": forms.Textarea( - attrs={ - "rows": 1, - "placeholder": _("Describe the type of failure mode"), - "aria-describedby": _("explanation-failure-mode"), - } - ), - "description": forms.Textarea( - attrs={ - "rows": 2, - "placeholder": _("Describe in more detail what the failure mode is about."), - "aria-describedby": _("explanation-description"), - } - ), - "frequency_level": forms.Select( - attrs={ - "aria-describedby": _("explanation-frequency-level"), - }, - ), - "detectability_level": forms.Select( - attrs={ - "aria-describedby": _("explanation-detectability_level"), - }, - ), - "effect": CheckboxGroup(), - "risk_class": forms.Textarea(attrs={"rows": 1, "readonly": ""}), - } - - error_messages = { - "failure_mode": { - "required": _("You must at least set a failure mode."), - }, - "frequency_level": { - "required": _("Choose a frequency level."), - }, - "detectability_level": { - "required": _("Choose a detectability level."), - }, - "effect": { - "required": _("Choose at least one effect."), - }, - } - - def clean(self): - if ( - "effect" in self.cleaned_data - and "frequency_level" in self.cleaned_data - and "detectability_level" in self.cleaned_data - ): - frequency_level = self.cleaned_data["frequency_level"] - detectability_level = self.cleaned_data["detectability_level"] - all_severity_levels = [effect.severity_level for effect in self.cleaned_data["effect"]] - highest_severity_level = max(all_severity_levels) - risk_class = calculate_risk_class(frequency_level, detectability_level, highest_severity_level) - self.cleaned_data["risk_class"] = risk_class.value - return self.cleaned_data - - -class FailureModeAffectedObjectForm(forms.ModelForm): - """ - With this form you can create or edit the impact a failure . - """ - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.fields["failure_mode"].empty_label = translated_blank_choice - - class Meta: - model = FailureModeAffectedObject - fields = ["failure_mode", "affected_department", "affected_ooi_type"] - - labels = { - "failure mode": _("Failure mode"), - "affected_department": _("Affected Department"), - "affected_ooi_type": _("Affected Objects"), - } - help_texts = { - "failure_mode": _("Choose a failure mode which applies to "), - "affected_department": _("When this failure mode occurs, which department is affected?"), - "affected_ooi_type": _("Which objects does this failure mode affect when it occurs?"), - } - widgets = { - "affected_ooi_type": forms.Select( - choices=OOI_TYPES, - attrs={ - "aria-describedby": _("explanation-affected-ooi-type"), - }, - ), - } - - -class FailureModeEffectForm(forms.ModelForm): - class Meta: - model = FailureModeEffect - fields = ["effect", "severity_level"] - - labels = { - "effect": _("Effect"), - "severity_level": _("Severity Level"), - } - - help_texts = { - "effect": _("Name a possible effect of any type of failure mode that can occur."), - "severity_level": _("Describe the severity of this effect ex. 1: not severe and 5: catastrophic"), - } - - widgets = { - "effect": forms.Textarea( - attrs={ - "rows": 3, - "placeholder": _("Describe a possible effect for FMEA"), - "aria-describedby": _("explanation-effect"), - } - ), - "severity_level": forms.Select( - attrs={ - "aria-describedby": _("explanation-severity-level"), - }, - ), - } - - error_messages = { - "effect": { - "required": _("The effect is required."), - "unique": _("This effect already exists."), - }, - "severity_level": { - "required": _("Choose a severity level."), - }, - } diff --git a/rocky/fmea/migrations/0001_initial.py b/rocky/fmea/migrations/0001_initial.py index 28320642fb0..fab3a5b5018 100644 --- a/rocky/fmea/migrations/0001_initial.py +++ b/rocky/fmea/migrations/0001_initial.py @@ -7,8 +7,6 @@ class Migration(migrations.Migration): initial = True - dependencies = [] - operations = [ migrations.CreateModel( name="FailureMode", diff --git a/rocky/fmea/migrations/0004_remove_failuremode_effect_and_more.py b/rocky/fmea/migrations/0004_remove_failuremode_effect_and_more.py new file mode 100644 index 00000000000..a20f0efa96d --- /dev/null +++ b/rocky/fmea/migrations/0004_remove_failuremode_effect_and_more.py @@ -0,0 +1,32 @@ +# Generated by Django 4.2.10 on 2024-02-20 11:15 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("fmea", "0003_auto_20220203_1534"), + ] + + operations = [ + migrations.RemoveField( + model_name="failuremode", + name="effect", + ), + migrations.RemoveField( + model_name="failuremodeaffectedobject", + name="failure_mode", + ), + migrations.DeleteModel( + name="FailureModeTreeObject", + ), + migrations.DeleteModel( + name="FailureMode", + ), + migrations.DeleteModel( + name="FailureModeAffectedObject", + ), + migrations.DeleteModel( + name="FailureModeEffect", + ), + ] diff --git a/rocky/fmea/models.py b/rocky/fmea/models.py deleted file mode 100644 index cadbdaec354..00000000000 --- a/rocky/fmea/models.py +++ /dev/null @@ -1,99 +0,0 @@ -from django.db import models -from django.urls import reverse -from django.utils.translation import gettext_lazy as _ - -from fmea.tools import BLANK_CHOICE - - -class DEPARTMENTS(models.TextChoices): - FINANCES = "Finances", _("Finances") - MARKETING = "Marketing", _("Marketing") - HR = "Human Resources", _("Human Resources") - R_AND_D = "Research & Development", _("Research & Development") - ADMIN = "Administration", _("Administration") - SERVICE = "Service", _("Service") - - -class SEVERITY_LEVEL(models.IntegerChoices): - L1 = 1, _("Level 1: Not Severe") - L2 = 2, _("Level 2: Harmful") - L3 = 3, _("Level 3: Severe") - L4 = 4, _("Level 4: Very Harmful") - L5 = 5, _("Level 5: Catastrophic") - - -class FREQUENCY_LEVEL(models.IntegerChoices): - L1 = 1, _("Level 1: Very Rare. Incident (almost) never occurs, almost unthinkable.") - L2 = 2, _("Level 2: Rare. Incidents occur less than once a year (3-5).") - L3 = 3, _("Level 3: Occurs. Incidents occur several times a year.") - L4 = 4, _("Level 4: Regularly. Incidents occur weekly.") - L5 = 5, _("Level 5: Frequent. Incidents occur daily.") - - -class DETECTABILITY_LEVEL(models.IntegerChoices): - L1 = 1, _("Level 1: Always Detectable. Incident (almost) never occurs, almost unthinkable.") - L2 = 2, _("Level 2: Usually Detectable. Incidents occur less than once a year (3-5).") - L3 = 3, _("Level 3: Detectable. Failure mode is detectable with effort.") - L4 = 4, _("Level 4: Poorly Detectable. Detecting the failure mode is difficult.") - L5 = 5, _("Level 5: Almost Undetectable. Failure mode detection is very difficult or nearly impossible.") - - -class FailureModeEffect(models.Model): - effect = models.TextField(max_length=256, unique=True, blank=False) - severity_level = models.PositiveSmallIntegerField(choices=BLANK_CHOICE + SEVERITY_LEVEL.choices, blank=False) - - def __str__(self): - return self.effect - - def get_absolute_url(self): - return reverse("fmea_failure_mode_effect_detail", args=[self.pk]) - - def get_update_url(self): - return reverse("fmea_failure_mode_effect_update", args=[self.pk]) - - -class FailureMode(models.Model): - failure_mode = models.CharField(max_length=256, unique=True, blank=False) - description = models.CharField(max_length=256, blank=True) - frequency_level = models.PositiveSmallIntegerField(choices=BLANK_CHOICE + FREQUENCY_LEVEL.choices) - detectability_level = models.PositiveSmallIntegerField(choices=BLANK_CHOICE + DETECTABILITY_LEVEL.choices) - effect = models.ManyToManyField(FailureModeEffect, blank=False) - risk_priority_number = models.PositiveSmallIntegerField(default=0) - critical_score = models.PositiveSmallIntegerField(default=0) - risk_class = models.CharField(max_length=50, blank=True, null=True) - - class Meta: - verbose_name_plural = _("Failure modes") - - def __str__(self): - return self.failure_mode - - def get_absolute_url(self): - return reverse("fmea_failure_mode_detail", args=[self.pk]) - - def get_update_url(self): - return reverse("fmea_failure_mode_update", args=[self.pk]) - - -class FailureModeAffectedObject(models.Model): - failure_mode = models.ForeignKey( - FailureMode, - on_delete=models.CASCADE, - null=True, - ) - affected_department = models.CharField(max_length=50, choices=BLANK_CHOICE + DEPARTMENTS.choices) - affected_ooi_type = models.CharField(max_length=100) - - class Meta: - verbose_name_plural = _("Failure Mode Affected Objects") - - def __str__(self): - return str(self.failure_mode) - - -class FailureModeTreeObject(models.Model): - tree_object = models.CharField(max_length=256) - affected_department = models.CharField(max_length=50, choices=BLANK_CHOICE + DEPARTMENTS.choices) - - def __str__(self): - return str(self.tree_object) diff --git a/rocky/fmea/signals.py b/rocky/fmea/signals.py deleted file mode 100644 index 6de5562a9bb..00000000000 --- a/rocky/fmea/signals.py +++ /dev/null @@ -1,54 +0,0 @@ -from django.db.models.signals import post_save, pre_delete -from django.dispatch import receiver - -from fmea.models import FailureMode, FailureModeEffect -from fmea.tools import calculate_risk_class - - -def recalculate_risk_class(instance, delete=False): - """ - Recalculate the risk class when FMEA effects changes/deleted for all - failure modes it belongs to. - """ - - severity_level = 0 - severity_levels = [] - failure_modes = FailureMode.objects.filter(effect=instance) - for failure_mode in failure_modes: - frequency_level = failure_mode.frequency_level - detectability_level = failure_mode.detectability_level - for effect in failure_mode.effect.all(): - if delete: - if instance.effect != effect.effect: - severity_levels.append(effect.severity_level) - else: - severity_levels.append(effect.severity_level) - if severity_levels: - severity_level = max(severity_levels) - risk_class = calculate_risk_class(frequency_level, detectability_level, severity_level) - failure_mode.risk_class = risk_class.value - failure_mode.save() - - -@receiver(pre_delete, sender=FailureModeEffect) -def failure_mode_effect_pre_deleted(instance, **kwargs): - """ - This function gets triggered every time FailureMode effects got - deleted. It must check all failure modes that is connected to the deleted - effect(s) and recalculate the risk class. pre_delete is used here, - otherwise once deleted you don't know which failure modes to check. - """ - - # Got parameter deleted=True to exclude deleted effects - recalculate_risk_class(instance, delete=True) - - -@receiver(post_save, sender=FailureModeEffect) -def failure_mode_effect_changed(instance, **kwargs): - """ - This function gets triggered every time FailureMode effects got - updated. It must check all failure modes that is connected to the updated - effect(s) and recalculate the risk class. - """ - - recalculate_risk_class(instance) diff --git a/rocky/fmea/templates/fmea/fmea_department_heatmap.html b/rocky/fmea/templates/fmea/fmea_department_heatmap.html deleted file mode 100644 index 2ea02d8af7e..00000000000 --- a/rocky/fmea/templates/fmea/fmea_department_heatmap.html +++ /dev/null @@ -1,44 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -
    - {% if heatmap_data %} - - - - - - {% for department in departments %}{% endfor %} - - {% for data in heatmap_data %} - - - {% for department in departments %} - {% if department in data.affected_departments %} - - {% else %} - - {% endif %} - {% endfor %} - - {% endfor %} - -
    {% translate "FMEA Departments Heatmap:" %}
    {{ department }}
    {{ data.failure_mode }} - {{ data.risk_class }} -
    - {% else %} -

    {% translate "No data to build heatmap" %}

    - {% endif %} -
    -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html b/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html deleted file mode 100644 index 27c3b146139..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html +++ /dev/null @@ -1,43 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -

    Failure mode affected object

    -
    - {% if object %} - - - - - - - - - - - - - - - - - - -
    {% translate "Failure mode affected object table:" %}
    {% translate "Failure mode" %}{% translate "Affected Department" %}{% translate "Affected Object" %}{% translate "Edit" %}
    {{ object.failure_mode }}{{ object.affected_department }}{{ object.affected_ooi_type }} - Edit -
    - {% else %} -

    {% translate "Failure mode affected objects cannot be found." %}

    - {% endif %} -
    -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_form.html b/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_form.html deleted file mode 100644 index a38d7f25a42..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_form.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load static %} -{% load i18n %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    - {% if failure_mode_exist %} -

    {% translate "Define which objects are affected for a failure mode" %}

    -
    - {% csrf_token %} - {% translate "Failure mode affected objects" as fieldset_legend %} - {% include "partials/form/fieldset.html" with legend=fieldset_legend fieldset="failure_mode affected_department affected_ooi_type" fields=form %} - - {% if editing_view %} - - {% else %} - - {% endif %} -
    - {% else %} -

    {% translate "No failure mode yet defined." %}

    -

    {% translate "To add affected objects to a failure mode, first create one." %}

    - {% translate "Create failure mode" %} - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_list.html b/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_list.html deleted file mode 100644 index dda807424ba..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_affected_object_list.html +++ /dev/null @@ -1,51 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -

    Failure mode affected object

    - {% if object_list %} -
    - - - - - - - - - - - - {% for object in object_list %} - - - - - - - {% endfor %} - -
    {% translate "Failure mode affected objects table:" %}
    {% translate "Failure mode" %}{% translate "Affected Department" %}{% translate "Affected Object" %}{% translate "Edit" %}
    - {{ object.failure_mode }} - {{ object.affected_department }}{{ object.affected_ooi_type }} - {% translate "Edit" %} -
    -
    - {% include "partials/pagination.html" %} - - {% else %} -

    {% translate "No failure mode affected objects yet defined." %}

    - {% translate "Create failure mode Affected Objects" %} - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_departments.html b/rocky/fmea/templates/fmea/fmea_failure_mode_departments.html deleted file mode 100644 index 7e14f0127fd..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_departments.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -

    {% translate "Departments failure modes" %}

    -
    - - - - - - - - - - {% for object in object_list %} - - - - - {% empty %} -

    {% translate "Nothing found." %}

    - {% endfor %} - -
    {% translate "Failure modes and affected departments table:" %}
    {% translate "Failure Mode" %}{% translate "Affected Departments" %}
    {{ object.failure_mode }}{{ object.affected_department }}
    -
    -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_detail.html b/rocky/fmea/templates/fmea/fmea_failure_mode_detail.html deleted file mode 100644 index baee22bbcb5..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_detail.html +++ /dev/null @@ -1,71 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -

    {% translate "Failure mode" %}

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    {% translate "Failure mode properties" %}
    {% translate "Properties" %}
    {% translate "Risk class" %} - {{ object.risk_class }} -
    {% translate "Failure mode" %}{{ object.failure_mode }}
    {% translate "Frequency level" %}{{ object.get_frequency_level_display }}
    {% translate "Detectability level" %}{{ object.get_detectability_level_display }}
    - {% if object.risk_class %} - - {% blocktrans count object.effect.all.count as count %} - Effect and severity level - {% plural %} - Effects and severity levels - {% endblocktrans %} - - {% endif %} - -
      - {% for effect in object.effect.all %}
    1. {{ effect }} - {{ effect.get_severity_level_display }}
    2. {% endfor %} -
    -
    {% translate "Description" %}{{ object.description }}
    -
    - -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_detail.html b/rocky/fmea/templates/fmea/fmea_failure_mode_effect_detail.html deleted file mode 100644 index 2a2a5974e92..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_detail.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" with breadcrumb_list=breadcrumb_list %} - -
    -
    -
    -

    {% translate "Failure mode effect" %}

    -
    - - - - - - - - - - - - - - - - - -
    {% translate "Failure mode effect properties" %}
    {% translate "Properties" %}
    {% translate "Effect" %}{{ object.effect }}
    {% translate "Severity" %}{{ object.get_severity_level_display }}
    -
    - -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_form.html b/rocky/fmea/templates/fmea/fmea_failure_mode_effect_form.html deleted file mode 100644 index 3e666ec061c..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_form.html +++ /dev/null @@ -1,30 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load static %} -{% load i18n %} - -{% block content %} - {% include "header.html" with breadcrumb_list=breadcrumb_list %} - -
    -
    -
    -

    {% translate "FMEA effect and severity" %}

    -
    - {% csrf_token %} - {% translate "FMEA effect" as fieldset_legend %} - {% include "partials/form/fieldset.html" with legend=fieldset_legend fieldset="effect severity_level" fields=form %} - - {% if editing_view %} - - {% else %} - - {% endif %} -
    -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_list.html b/rocky/fmea/templates/fmea/fmea_failure_mode_effect_list.html deleted file mode 100644 index 0cec6e7de07..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_effect_list.html +++ /dev/null @@ -1,48 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" with breadcrumb_list=breadcrumb_list %} - -
    -
    -
    -

    Failure mode effects

    - {% if object_list %} -
    - - - - - - - - - - - {% for object in object_list %} - - - - - - {% endfor %} - -
    {% translate "Failure mode effects table:" %}
    {% translate "Failure mode effect" %}{% translate "Severity level" %}{% translate "Edit" %}
    - {{ object.effect }} - {{ object.get_severity_level_display }} - Edit -
    -
    - {% include "partials/pagination.html" %} - - {% else %} -

    {% translate "No failure mode effect yet defined." %}

    - {% translate "Create a failure mode effect" %} - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_form.html b/rocky/fmea/templates/fmea/fmea_failure_mode_form.html deleted file mode 100644 index 933ec027a08..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_form.html +++ /dev/null @@ -1,36 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load static %} -{% load i18n %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    - {% if failure_mode_effect_exist %} -

    {% translate "Create a new failure mode" %}

    -
    - {% csrf_token %} - {% translate "Failure mode and effects" as fieldset_legend %} - {% include "partials/form/fieldset.html" with legend=fieldset_legend fieldset="failure_mode description frequency_level detectability_level effect" fields=form %} - - {% if editing_view %} - - {% else %} - - {% endif %} -
    - {% else %} -

    {% translate "No failure mode effects created." %}

    -

    {% translate "First create failure mode effects which can be added later to a failure mode." %}

    - {% translate "Create failure mode effects" %} - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_list.html b/rocky/fmea/templates/fmea/fmea_failure_mode_list.html deleted file mode 100644 index 7697415933f..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_list.html +++ /dev/null @@ -1,83 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    - {% if object_list %} -

    {% translate "Failure modes" %}

    -
    - - - - - - - - - - - - {% for object in object_list %} - - - - - - - - - - {% endfor %} - -
    {% translate "Failure mode table:" %}
    {% translate "Risk Class" %}{% translate "Failure Mode" %}{% translate "Details" %}{% translate "Edit" %}
    - {{ object.risk_class }} - - {{ object.failure_mode }} - - - - {% translate "Edit" %} -
    -

    - {% translate "Description:" %} {{ object.description }} -
    - {% translate "Frequency level:" %} {{ object.get_frequency_level_display }} -
    - {% translate "Detectability level:" %} {{ object.get_detectability_level_display }} -
    - {% if object.risk_class %} - - {% blocktrans count object.effect.all.count as count %} - Effect and severity level - {% plural %} - Effects and severity levels - {% endblocktrans %} - - {% endif %} -

      - {% for effect in object.effect.all %}
    1. {{ effect }} - {{ effect.get_severity_level_display }}
    2. {% endfor %} -
    -

    -
    -
    - {% include "partials/pagination.html" %} - - {% else %} -

    {% translate "No failure mode yet defined." %}

    - {% translate "Create failure mode" %} - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_failure_mode_report.html b/rocky/fmea/templates/fmea/fmea_failure_mode_report.html deleted file mode 100644 index 50ced3f59a0..00000000000 --- a/rocky/fmea/templates/fmea/fmea_failure_mode_report.html +++ /dev/null @@ -1,59 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    - {% if object %} -

    {% translate "Failure mode report" %}

    -
    -
    -

    {% translate "Summary" %}

    -
      -
    1. - {% translate "Failure mode: " %}{{ object.failure_mode }} -
    2. -
    3. - {% translate "Severity: " %}{{ object.get_severity_level_display }} -
    4. -
    5. - {% translate "Detectability: " %}{{ object.get_detectability_level_display }} -
    6. -
    7. - {% translate "Frequency: " %}{{ object.get_frequency_level_display }} -
    8. -
    9. - {% translate "Effect: " %}{{ object.effect }} -
    10. -
    11. - {% translate "Description: " %}{{ object.description }} -
    12. -
    13. - {% translate "Affected Departments: " %} - {% for department_object in failure_mode_affected_departments %} - {{ department_object.affected_department }} - {% endfor %} -
    14. -
    15. - {% translate "Affected OOI's: " %} - {% for ooi_type_object in failure_mode_affected_ooi_types %} - {{ ooi_type_object.affected_ooi_type }} - {% endfor %} -
    16. -
    - Export to PDF -
    -
    - {% else %} -

    {% translate "Report cannot be viewed, failure mode not found." %}

    - {% endif %} -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/templates/fmea/fmea_index.html b/rocky/fmea/templates/fmea/fmea_index.html deleted file mode 100644 index 730c3c592d3..00000000000 --- a/rocky/fmea/templates/fmea/fmea_index.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends "layouts/base.html" %} - -{% load i18n %} -{% load static %} - -{% block content %} - {% include "header.html" %} - -
    -
    -
    -

    {% translate "FMEA introduction" %}

    -

    - {% blocktranslate trimmed %} - FMEA (failure mode and effective analysis) is a step-by-step approach - for collecting knowledge about possible points of failure in a design, - manufacturing process, product or service. - {% endblocktranslate %} -

    -

    - {% blocktranslate trimmed %} - Failure mode (FM) refers to the way in which something might break - down and includes potential errors that may occur, especially errors - that may affect a system. Effective analysis (EA) involves - deciphering the consequences of those break downs by making sure - that all failures can be detected, determining how frequently a - failure might occur and identifying which potential failures should be - prioritized. - {% endblocktranslate %} -

    - -
    -
    -
    -{% endblock content %} diff --git a/rocky/fmea/tools.py b/rocky/fmea/tools.py deleted file mode 100644 index 9afa22a1b6e..00000000000 --- a/rocky/fmea/tools.py +++ /dev/null @@ -1,63 +0,0 @@ -from enum import Enum -from io import BytesIO - -from django.http import HttpResponse -from django.template.loader import get_template -from django.utils.translation import gettext_lazy as _ -from tools.ooi_helpers import OOI_TYPES_WITHOUT_FINDINGS -from xhtml2pdf import pisa - -translated_blank_choice = _("--- Select an option ----") -BLANK_CHOICE = [("", translated_blank_choice)] - - -def transform_ooi_types_to_choices(): - choices = BLANK_CHOICE.copy() - for ooi_type in OOI_TYPES_WITHOUT_FINDINGS: - choices.append((ooi_type, ooi_type)) - return tuple(choices) - - -OOI_TYPES = transform_ooi_types_to_choices() - - -def html_to_pdf(template_src, context_dict={}): - encoder_type = "ISO-8859-1" - template = get_template(template_src) - html = template.render(context_dict) - result = BytesIO() - pdf = pisa.pisaDocument(BytesIO(html.encode(encoder_type)), result) - if not pdf.err: - return HttpResponse(result.getvalue(), content_type="application/pdf") - return None - - -class RiskClass(Enum): - NONE = None - CRITICAL = "Critical" - HIGH = "High" - MEDIUM = "Medium" - LOW = "Low" - VERY_LOW = "Very low" - - -def calculate_risk_class(frequency_level, detectability_level, severity_level): - """ - Calculates the Risk Class of a failure mode based on 3 variables: - Severity Level, Frequency Level and Detectabality Level. - """ - risk_class = RiskClass.NONE - risk_priority_number = severity_level * frequency_level * detectability_level - critical_score = severity_level * frequency_level - - if risk_priority_number > 60 or critical_score > 14: - risk_class = RiskClass.CRITICAL - elif (40 <= risk_priority_number <= 60) or (11 <= critical_score <= 14): - risk_class = RiskClass.HIGH - elif (28 <= risk_priority_number <= 39) or (6 <= critical_score <= 10): - risk_class = RiskClass.MEDIUM - elif (9 <= risk_priority_number <= 27) or (3 <= critical_score <= 5): - risk_class = RiskClass.LOW - elif (1 <= risk_priority_number <= 8) or (1 <= critical_score <= 2): - risk_class = RiskClass.VERY_LOW - return risk_class diff --git a/rocky/fmea/urls.py b/rocky/fmea/urls.py deleted file mode 100644 index 4ca5dcda0f8..00000000000 --- a/rocky/fmea/urls.py +++ /dev/null @@ -1,87 +0,0 @@ -from django.urls import path - -from fmea import views - -urlpatterns = [ - path("", views.FMEAIndexView.as_view(), name="fmea_intro"), - path( - "failure-modes/create/", - views.FailureModeCreateView.as_view(), - name="fmea_failure_mode_create", - ), - path( - "failure-modes/", - views.FailureModeListView.as_view(), - name="fmea_failure_mode_list", - ), - path( - "failure-modes/effects/create/", - views.FailureModeEffectCreateView.as_view(), - name="fmea_failure_mode_effect_create", - ), - path( - "failure-modes/effects/", - views.FailureModeEffectListView.as_view(), - name="fmea_failure_mode_effect_list", - ), - path( - "failure-modes/affected-objects/create/", - views.FailureModeAffectedObjectCreateView.as_view(), - name="fmea_failure_mode_affected_object_create", - ), - path( - "failure-modes/affected-objects//update/", - views.FailureModeAffectedObjectUpdateView.as_view(), - name="fmea_failure_mode_affected_object_update", - ), - path( - "failure-modes/affected-objects/", - views.FailureModeAffectedObjectListView.as_view(), - name="fmea_failure_mode_affected_object_list", - ), - path( - "failure-modes/affected-objects//", - views.FailureModeAffectedObjectDetailView.as_view(), - name="fmea_failure_mode_affected_object_detail", - ), - path( - "failure-modes/department-heatmap/", - views.FMEADepartmentHeatmapView.as_view(), - name="fmea_department_heatmap", - ), - path( - "failure-modes//", - views.FailureModeDetailView.as_view(), - name="fmea_failure_mode_detail", - ), - path( - "failure-modes//report/", - views.FailureModeReportView.as_view(), - name="fmea_failure_mode_report", - ), - path( - "failure-modes//report/pdf/", - views.GenerateFailureModePDF.as_view(), - name="fmea_failure_mode_report_pdf", - ), - path( - "failure-modes//update/", - views.FailureModeUpdateView.as_view(), - name="fmea_failure_mode_update", - ), - path( - "fmea_node_selection/", - views.FMEATreeObjectView.as_view(), - name="fmea_node_selection", - ), - path( - "failure-modes/effects//", - views.FailureModeEffectDetailView.as_view(), - name="fmea_failure_mode_effect_detail", - ), - path( - "failure-modes/effects//update/", - views.FailureModeEffectUpdateView.as_view(), - name="fmea_failure_mode_effect_update", - ), -] diff --git a/rocky/fmea/views/__init__.py b/rocky/fmea/views/__init__.py deleted file mode 100644 index 6ad278ecad4..00000000000 --- a/rocky/fmea/views/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from .fmea_affected_objects import * -from .fmea_analytics import * -from .fmea_failure_mode import * -from .fmea_failure_mode_effect import * -from .views import * diff --git a/rocky/fmea/views/fmea_affected_objects.py b/rocky/fmea/views/fmea_affected_objects.py deleted file mode 100644 index 767361c3b61..00000000000 --- a/rocky/fmea/views/fmea_affected_objects.py +++ /dev/null @@ -1,144 +0,0 @@ -from django.contrib import messages -from django.core.exceptions import ValidationError -from django.shortcuts import get_object_or_404, redirect -from django.urls.base import reverse, reverse_lazy -from django.utils.translation import gettext_lazy as _ -from django.views.generic import UpdateView, View -from django.views.generic.detail import DetailView -from django.views.generic.edit import CreateView -from django.views.generic.list import ListView - -from fmea.forms import FailureModeAffectedObjectForm -from fmea.models import FailureMode, FailureModeAffectedObject, FailureModeTreeObject -from fmea.views.view_helpers import AffectedObjectBreadcrumbsMixin - - -class FailureModeAffectedObjectCreateView(AffectedObjectBreadcrumbsMixin, CreateView): - """ - View of failure modes with the affected departments. - """ - - model = FailureModeAffectedObject - template_name = "fmea/fmea_failure_mode_affected_object_form.html" - form_class = FailureModeAffectedObjectForm - - def get_success_url(self, **kwargs): - return reverse_lazy("fmea_failure_mode_affected_object_detail", kwargs={"pk": self.object.id}) - - def form_valid(self, form): - self.add_success_notification() - return super().form_valid(form) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["failure_mode_exist"] = FailureMode.objects.all().exists() - return context - - def add_success_notification(self): - success_message = _("Failure mode affected objects successfully created.") - messages.add_message(self.request, messages.SUCCESS, success_message) - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append( - { - "text": _("Create"), - "url": reverse("fmea_failure_mode_affected_object_create"), - } - ) - - return breadcrumbs - - -class FailureModeAffectedObjectUpdateView(AffectedObjectBreadcrumbsMixin, UpdateView): - model = FailureModeAffectedObject - form_class = FailureModeAffectedObjectForm - template_name = "fmea/fmea_failure_mode_affected_object_form.html" - success_url = reverse_lazy("fmea_failure_mode_affected_object_list") - - def get_object(self, *args, **kwargs): - failure_mode_affected_objects = get_object_or_404(self.model, pk=self.kwargs["pk"]) - return failure_mode_affected_objects - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["editing_view"] = "editing" - context["id"] = self.kwargs["pk"] - context["failure_mode_exist"] = FailureMode.objects.all().exists() - return context - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append( - { - "text": self.object.failure_mode, - "url": reverse( - "fmea_failure_mode_affected_object_detail", - kwargs={"pk": self.kwargs["pk"]}, - ), - } - ) - breadcrumbs.append( - { - "text": _("Edit"), - "url": reverse( - "fmea_failure_mode_affected_object_update", - kwargs={"pk": self.kwargs["pk"]}, - ), - } - ) - - return breadcrumbs - - -class FailureModeAffectedObjectListView(AffectedObjectBreadcrumbsMixin, ListView): - """ - View of all failure modes affected objects. - """ - - template_name = "fmea/fmea_failure_mode_affected_object_list.html" - model = FailureModeAffectedObject - paginate_by = 10 - - -class FailureModeAffectedObjectDetailView(AffectedObjectBreadcrumbsMixin, DetailView): - """ - View for 1 failure mode affected objects. - """ - - template_name = "fmea/fmea_failure_mode_affected_object_detail.html" - model = FailureModeAffectedObject - - -class FMEATreeObjectView(View): - """ - Add tree nodes to affected departments - """ - - def post(self, request, *args, **kwargs): - graph_url = request.POST["current-url"] - self.create_objects(request) - return redirect(graph_url) - - def create_objects(self, request): - department = request.POST["department"] - selected_oois = request.POST.getlist("selected_ooi") - if department and selected_oois: - for selected_ooi in selected_oois: - try: - fmea_tree_object = FailureModeTreeObject(tree_object=selected_ooi, affected_department=department) - fmea_tree_object.save() - except ValidationError: - self.add_error_notification() - return - self.add_success_notification() - else: - self.add_error_notification() - - def add_success_notification(self): - success_message = _("Treeobjects successfully added.") - messages.add_message(self.request, messages.SUCCESS, success_message) - - def add_error_notification(self): - error_message = _("Please select a department or ooi.") - messages.add_message(self.request, messages.ERROR, error_message) diff --git a/rocky/fmea/views/fmea_analytics.py b/rocky/fmea/views/fmea_analytics.py deleted file mode 100644 index 8051cb0657e..00000000000 --- a/rocky/fmea/views/fmea_analytics.py +++ /dev/null @@ -1,89 +0,0 @@ -from django.http import HttpResponse -from django.urls.base import reverse -from django.utils.translation import gettext_lazy as _ -from django.views.generic import TemplateView, View -from django.views.generic.detail import DetailView -from tools.view_helpers import Breadcrumb - -from fmea.models import ( - DEPARTMENTS, - FailureMode, - FailureModeAffectedObject, -) -from fmea.tools import html_to_pdf -from fmea.views.view_helpers import FMEABreadcrumbsMixin - - -class FailureModeReportView(FMEABreadcrumbsMixin, DetailView): - """ - View for a report based on a failure mode - """ - - template_name = "fmea/fmea_failure_mode_report.html" - - def get_failure_mode_affected_object(self, **kwargs): - failure_mode = self.get_object().failure_mode - failure_mode_affected_objects = FailureModeAffectedObject.objects.filter( - failure_mode__failure_mode__contains=failure_mode - ) - return failure_mode_affected_objects - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append( - { - "text": _("Report"), - "url": reverse("fmea_failure_mode_report", kwargs={"pk": self.kwargs["pk"]}), - } - ) - return breadcrumbs - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["failure_mode_affected_departments"] = self.get_failure_mode_affected_object(**kwargs).values( - "affected_department" - ) - context["failure_mode_affected_ooi_types"] = self.get_failure_mode_affected_object(**kwargs).values( - "affected_ooi_type" - ) - return context - - -class GenerateFailureModePDF(View): - def get(self, request, *args, **kwargs): - template = "fmea/fmea_failure_mode_report.html" - pdf = html_to_pdf(template) - return HttpResponse(pdf, content_type="application/pdf") - - -class FMEADepartmentHeatmapView(FMEABreadcrumbsMixin, TemplateView): - template_name = "fmea/fmea_department_heatmap.html" - - def populate_heatmap_data(self): - heatmap_data = [] - failure_mode_data = [] - failure_mode_objects = FailureMode.objects.all() - for failure_mode in failure_mode_objects: - failure_mode_data = {} - failure_mode_affected_objects = FailureModeAffectedObject.objects.filter( - failure_mode__failure_mode__contains=failure_mode.failure_mode - ) - failure_mode_data["failure_mode"] = failure_mode.failure_mode - failure_mode_data["risk_class"] = failure_mode.risk_class - affected_departments = [] - for affected_objects in failure_mode_affected_objects: - affected_departments.append(affected_objects.affected_department) - failure_mode_data["affected_departments"] = affected_departments - heatmap_data.append(failure_mode_data) - return heatmap_data - - def build_breadcrumbs(self) -> list[Breadcrumb]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append({"text": _("Heatmap"), "url": reverse("fmea_department_heatmap")}) - return breadcrumbs - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["heatmap_data"] = self.populate_heatmap_data() - context["departments"] = DEPARTMENTS - return context diff --git a/rocky/fmea/views/fmea_failure_mode.py b/rocky/fmea/views/fmea_failure_mode.py deleted file mode 100644 index e6f9754da83..00000000000 --- a/rocky/fmea/views/fmea_failure_mode.py +++ /dev/null @@ -1,115 +0,0 @@ -from django.contrib import messages -from django.urls.base import reverse, reverse_lazy -from django.utils.translation import gettext_lazy as _ -from django.views.generic import UpdateView -from django.views.generic.detail import DetailView -from django.views.generic.edit import CreateView -from django.views.generic.list import ListView - -from fmea.forms import FailureModeForm -from fmea.models import FailureMode, FailureModeEffect -from fmea.views.view_helpers import FailureModeBreadcrumbsMixin - - -class FailureModeCreateView(FailureModeBreadcrumbsMixin, CreateView): - """ - Create a new failure mode with the failure mode form of FMEA. - """ - - model = FailureMode - template_name = "fmea/fmea_failure_mode_form.html" - form_class = FailureModeForm - - def get_success_url(self, **kwargs): - return reverse_lazy("fmea_failure_mode_detail", kwargs={"pk": self.object.id}) - - def form_valid(self, form): - self.add_success_notification() - return super().form_valid(form) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["failure_mode_effect_exist"] = FailureModeEffect.objects.count() > 0 - return context - - def add_success_notification(self): - success_message = _("Failure mode successfully created.") - messages.add_message(self.request, messages.SUCCESS, success_message) - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append( - { - "text": _("Create"), - "url": reverse("fmea_failure_mode_create"), - } - ) - - return breadcrumbs - - -class FailureModeListView(FailureModeBreadcrumbsMixin, ListView): - """ - View of all failure modes. - """ - - template_name = "fmea/fmea_failure_mode_list.html" - model = FailureMode - paginate_by = 10 - - -class FailureModeUpdateView(FailureModeBreadcrumbsMixin, UpdateView): - model = FailureMode - form_class = FailureModeForm - template_name = "fmea/fmea_failure_mode_form.html" - - def get_success_url(self, **kwargs): - return reverse_lazy("fmea_failure_mode_detail", kwargs={"pk": self.object.id}) - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - - breadcrumbs.append( - { - "text": self.object.failure_mode, - "url": reverse("fmea_failure_mode_detail", kwargs={"pk": self.kwargs["pk"]}), - } - ) - breadcrumbs.append( - { - "text": _("Edit"), - "url": reverse( - "fmea_failure_mode_update", - kwargs={"pk": self.kwargs["pk"]}, - ), - } - ) - - return breadcrumbs - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["editing_view"] = "editing" - context["failure_mode_effect_exist"] = FailureModeEffect.objects.count() > 0 - return context - - -class FailureModeDetailView(FailureModeBreadcrumbsMixin, DetailView): - """ - View for 1 failure mode. Get failure mode with ID # in URL - """ - - template_name = "fmea/fmea_failure_mode_detail.html" - model = FailureMode - - def build_breadcrumbs(self) -> list[dict[str, str]]: - breadcrumbs = super().build_breadcrumbs() - - breadcrumbs.append( - { - "text": self.object.failure_mode, - "url": reverse("fmea_failure_mode_detail", kwargs={"pk": self.kwargs["pk"]}), - } - ) - - return breadcrumbs diff --git a/rocky/fmea/views/fmea_failure_mode_effect.py b/rocky/fmea/views/fmea_failure_mode_effect.py deleted file mode 100644 index e0829678b80..00000000000 --- a/rocky/fmea/views/fmea_failure_mode_effect.py +++ /dev/null @@ -1,114 +0,0 @@ -from django.contrib import messages -from django.urls.base import reverse, reverse_lazy -from django.utils.translation import gettext_lazy as _ -from django.views.generic import UpdateView -from django.views.generic.detail import DetailView -from django.views.generic.edit import CreateView -from django.views.generic.list import ListView -from tools.view_helpers import Breadcrumb - -from fmea.forms import FailureModeEffectForm -from fmea.models import FailureModeEffect -from fmea.views.view_helpers import FailureModeEffectBreadcrumbsMixin - - -class FailureModeEffectCreateView(FailureModeEffectBreadcrumbsMixin, CreateView): - """ - View to create a failure mode effect. - """ - - model = FailureModeEffect - template_name = "fmea/fmea_failure_mode_effect_form.html" - form_class = FailureModeEffectForm - - def get_success_url(self, **kwargs): - return reverse_lazy("fmea_failure_mode_effect_detail", kwargs={"pk": self.object.id}) - - def form_valid(self, form): - self.add_success_notification() - return super().form_valid(form) - - def add_success_notification(self): - success_message = _("Failure mode effect successfully created.") - messages.add_message(self.request, messages.SUCCESS, success_message) - - def build_breadcrumbs(self) -> list[Breadcrumb]: - breadcrumbs = super().build_breadcrumbs() - breadcrumbs.append( - { - "text": _("Create"), - "url": reverse("fmea_failure_mode_effect_create"), - } - ) - - return breadcrumbs - - -class FailureModeEffectUpdateView(FailureModeEffectBreadcrumbsMixin, UpdateView): - """ - View for updating a failure mode effect. - """ - - model = FailureModeEffect - form_class = FailureModeEffectForm - template_name = "fmea/fmea_failure_mode_effect_form.html" - - def get_success_url(self, **kwargs): - return reverse_lazy("fmea_failure_mode_effect_detail", kwargs={"pk": self.object.id}) - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - context["editing_view"] = "editing" - return context - - def build_breadcrumbs(self) -> list[Breadcrumb]: - breadcrumbs = super().build_breadcrumbs() - - breadcrumbs.append( - { - "text": self.object.effect, - "url": reverse("fmea_failure_mode_effect_detail", kwargs={"pk": self.kwargs["pk"]}), - } - ) - breadcrumbs.append( - { - "text": _("Edit"), - "url": reverse( - "fmea_failure_mode_effect_update", - kwargs={"pk": self.kwargs["pk"]}, - ), - } - ) - - return breadcrumbs - - -class FailureModeEffectDetailView(FailureModeEffectBreadcrumbsMixin, DetailView): - """ - View for 1 failure mode effect. id in kwargs. - """ - - template_name = "fmea/fmea_failure_mode_effect_detail.html" - model = FailureModeEffect - - def build_breadcrumbs(self) -> list[Breadcrumb]: - breadcrumbs = super().build_breadcrumbs() - - breadcrumbs.append( - { - "text": self.object.effect, - "url": reverse("fmea_failure_mode_detail", kwargs={"pk": self.kwargs["pk"]}), - } - ) - - return breadcrumbs - - -class FailureModeEffectListView(FailureModeEffectBreadcrumbsMixin, ListView): - """ - View of all failure modes effects. - """ - - template_name = "fmea/fmea_failure_mode_effect_list.html" - model = FailureModeEffect - paginate_by = 10 diff --git a/rocky/fmea/views/view_helpers.py b/rocky/fmea/views/view_helpers.py deleted file mode 100644 index 3d8f6e284ab..00000000000 --- a/rocky/fmea/views/view_helpers.py +++ /dev/null @@ -1,36 +0,0 @@ -from django.urls import reverse_lazy -from django.utils.translation import gettext_lazy as _ -from tools.view_helpers import BreadcrumbsMixin - - -class FMEABreadcrumbsMixin(BreadcrumbsMixin): - breadcrumbs = [ - {"text": _("FMEA"), "url": reverse_lazy("fmea_intro")}, - ] - - -class FailureModeBreadcrumbsMixin(BreadcrumbsMixin): - breadcrumbs = [ - {"text": _("FMEA"), "url": reverse_lazy("fmea_intro")}, - {"text": _("Failure modes"), "url": reverse_lazy("fmea_failure_mode_list")}, - ] - - -class FailureModeEffectBreadcrumbsMixin(BreadcrumbsMixin): - breadcrumbs = [ - {"text": _("FMEA"), "url": reverse_lazy("fmea_intro")}, - { - "text": _("Failure mode effects"), - "url": reverse_lazy("fmea_failure_mode_effect_list"), - }, - ] - - -class AffectedObjectBreadcrumbsMixin(BreadcrumbsMixin): - breadcrumbs = [ - {"text": _("FMEA"), "url": reverse_lazy("fmea_intro")}, - { - "text": _("Failure Mode Affected Objects"), - "url": reverse_lazy("fmea_failure_mode_affected_object_list"), - }, - ] diff --git a/rocky/fmea/views/views.py b/rocky/fmea/views/views.py deleted file mode 100644 index 3c021148a77..00000000000 --- a/rocky/fmea/views/views.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.views.generic import TemplateView - -from fmea.views.view_helpers import FMEABreadcrumbsMixin - - -class FMEAIndexView(FMEABreadcrumbsMixin, TemplateView): - """ - The introduction page or main navigation for FMEA. - """ - - template_name = "fmea/fmea_index.html" diff --git a/rocky/poetry.lock b/rocky/poetry.lock index c6121388fba..ceba4a9f116 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -11,20 +11,6 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[[package]] -name = "arabic-reshaper" -version = "3.0.0" -description = "Reconstruct Arabic sentences to be used in applications that do not support Arabic" -optional = false -python-versions = "*" -files = [ - {file = "arabic_reshaper-3.0.0-py3-none-any.whl", hash = "sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc"}, - {file = "arabic_reshaper-3.0.0.tar.gz", hash = "sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099"}, -] - -[package.extras] -with-fonttools = ["fonttools (>=4.0)"] - [[package]] name = "asgiref" version = "3.7.2" @@ -42,17 +28,6 @@ typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] -[[package]] -name = "asn1crypto" -version = "1.5.1" -description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" -optional = false -python-versions = "*" -files = [ - {file = "asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67"}, - {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, -] - [[package]] name = "attrs" version = "23.2.0" @@ -512,60 +487,6 @@ tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.1 [package.extras] toml = ["tomli"] -[[package]] -name = "cryptography" -version = "42.0.3" -description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -optional = false -python-versions = ">=3.7" -files = [ - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, - {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, - {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, - {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, - {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, - {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, - {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, -] - -[package.dependencies] -cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} - -[package.extras] -docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] -nox = ["nox"] -pep8test = ["check-sdist", "click", "mypy", "ruff"] -sdist = ["build"] -ssh = ["bcrypt (>=3.1.5)"] -test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] -test-randomorder = ["pytest-randomly"] - [[package]] name = "cssbeautifier" version = "1.15.0" @@ -1997,20 +1918,6 @@ files = [ {file = "opentelemetry_util_http-0.41b0.tar.gz", hash = "sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3"}, ] -[[package]] -name = "oscrypto" -version = "1.3.0" -description = "TLS (SSL) sockets, key generation, encryption, decryption, signing, verification and KDFs using the OS crypto libraries. Does not require a compiler, and relies on the OS for patching. Works on Windows, OS X and Linux/BSD." -optional = false -python-versions = "*" -files = [ - {file = "oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085"}, - {file = "oscrypto-1.3.0.tar.gz", hash = "sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4"}, -] - -[package.dependencies] -asn1crypto = ">=1.5.1" - [[package]] name = "overrides" version = "7.7.0" @@ -2379,64 +2286,6 @@ files = [ plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] -[[package]] -name = "pyhanko" -version = "0.21.0" -description = "Tools for stamping and signing PDF files" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyHanko-0.21.0-py3-none-any.whl", hash = "sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8"}, - {file = "pyHanko-0.21.0.tar.gz", hash = "sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93"}, -] - -[package.dependencies] -asn1crypto = ">=1.5.1" -click = ">=8.1.3" -cryptography = ">=41.0.5" -pyhanko-certvalidator = ">=0.26.2,<0.27" -pyyaml = ">=6.0" -qrcode = ">=7.3.1" -requests = ">=2.31.0" -tzlocal = ">=4.3" - -[package.extras] -async-http = ["aiohttp (>=3.9.0,<3.10.0)"] -docs = ["sphinx", "sphinx-rtd-theme"] -etsi = ["xsdata (>=23.8,<24.0)"] -extra-pubkey-algs = ["oscrypto (>=1.2.1)"] -image-support = ["Pillow (>=7.2.0)", "python-barcode (==0.15.1)"] -live-test = ["certomancer-csc-dummy (==0.2.3)", "certomancer[pkcs12,web-api] (>=0.11.0,<0.12.0)", "pyHanko[async-http,extra-pubkey-algs,testing-basic,xmp]", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"] -mypy = ["pyHanko[async-http,etsi,extra-pubkey-algs,image-support,opentype,pkcs11,xmp]", "types-PyYAML", "types-python-dateutil", "types-requests", "types-tzlocal"] -opentype = ["fonttools (>=4.33.3)", "uharfbuzz (>=0.25.0,<0.38.0)"] -pkcs11 = ["python-pkcs11 (>=0.7.0,<0.8.0)"] -testing = ["certomancer-csc-dummy (==0.2.3)", "pyHanko[async-http,extra-pubkey-algs,image-support,opentype,pkcs11,testing-basic,xmp]", "pyHanko[etsi]", "pytest-aiohttp (>=1.0.4,<1.1.0)"] -testing-basic = ["backports.zoneinfo[tzdata]", "certomancer (==0.11.*)", "freezegun (>=1.1.0)", "pytest (>=6.1.1)", "pytest-asyncio (==0.21.1)", "pytest-cov (>=4.0,<4.2)", "requests-mock (>=1.8.0)"] -xmp = ["defusedxml (>=0.7.1,<0.8.0)"] - -[[package]] -name = "pyhanko-certvalidator" -version = "0.26.3" -description = "Validates X.509 certificates and paths; forked from wbond/certvalidator" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyhanko-certvalidator-0.26.3.tar.gz", hash = "sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5"}, - {file = "pyhanko_certvalidator-0.26.3-py3-none-any.whl", hash = "sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077"}, -] - -[package.dependencies] -asn1crypto = ">=1.5.1" -cryptography = ">=41.0.5" -oscrypto = ">=1.1.0" -requests = ">=2.31.0" -uritools = ">=3.0.1" - -[package.extras] -async-http = ["aiohttp (>=3.8,<3.10)"] -mypy = ["pyhanko-certvalidator[testing]", "types-requests"] -testing = ["aiohttp (>=3.8,<3.10)", "freezegun (>=1.1.0)", "pyhanko-certvalidator[async-http]", "pytest (>=6.1.1)", "pytest-aiohttp (>=1.0.4,<1.1.0)", "pytest-cov (>=4.0,<4.2)"] - [[package]] name = "pynacl" version = "1.5.0" @@ -2477,24 +2326,6 @@ files = [ [package.extras] diagrams = ["jinja2", "railroad-diagrams"] -[[package]] -name = "pypdf" -version = "4.0.1" -description = "A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files" -optional = false -python-versions = ">=3.6" -files = [ - {file = "pypdf-4.0.1-py3-none-any.whl", hash = "sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a"}, - {file = "pypdf-4.0.1.tar.gz", hash = "sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173"}, -] - -[package.extras] -crypto = ["PyCryptodome", "cryptography"] -dev = ["black", "flit", "pip-tools", "pre-commit (<2.18.0)", "pytest-cov", "pytest-socket", "pytest-timeout", "pytest-xdist", "wheel"] -docs = ["myst_parser", "sphinx", "sphinx_rtd_theme"] -full = ["Pillow (>=8.0.0)", "PyCryptodome", "cryptography"] -image = ["Pillow (>=8.0.0)"] - [[package]] name = "pyphen" version = "0.14.0" @@ -2672,20 +2503,6 @@ pytest = ">=5.0" [package.extras] dev = ["pre-commit", "pytest-asyncio", "tox"] -[[package]] -name = "python-bidi" -version = "0.4.2" -description = "Pure python implementation of the BiDi layout algorithm" -optional = false -python-versions = "*" -files = [ - {file = "python-bidi-0.4.2.tar.gz", hash = "sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e"}, - {file = "python_bidi-0.4.2-py2.py3-none-any.whl", hash = "sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13"}, -] - -[package.dependencies] -six = "*" - [[package]] name = "python-dateutil" version = "2.8.2" @@ -2956,67 +2773,6 @@ files = [ {file = "regex-2023.12.25.tar.gz", hash = "sha256:29171aa128da69afdf4bde412d5bedc335f2ca8fcfe4489038577d05f16181e5"}, ] -[[package]] -name = "reportlab" -version = "3.6.13" -description = "The Reportlab Toolkit" -optional = false -python-versions = ">=3.7,<4" -files = [ - {file = "reportlab-3.6.13-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a0330322c6c8123745ac7667fcc6ae3e0de3b73c15bdfaa28c788a9eaa0f50da"}, - {file = "reportlab-3.6.13-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:753485bb2b18cbd11340e227e4aaf9bde3bb64f83406dfa011e92ad0231a42c9"}, - {file = "reportlab-3.6.13-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58ea3471b9b4b8e7952bd357e8487789da11213470be328ffb3e5b7d7690c2c7"}, - {file = "reportlab-3.6.13-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1993a68c0edc45895d3df350d01b0456efe79aaf309cef777762742be501f2a"}, - {file = "reportlab-3.6.13-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ca8eb7a6607f8a664187a330bab9f8d11c9f81ed885e063dfbb29a130944a72a"}, - {file = "reportlab-3.6.13-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57add04824bca89a130f9d428ace1b003cce4061386e0ec2a1b45b554ffe7aa3"}, - {file = "reportlab-3.6.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98965c6e60d76ff63989d9400ae8e65efd67c665d785b377f438f166a57c053"}, - {file = "reportlab-3.6.13-cp310-cp310-win32.whl", hash = "sha256:3cb0da4975dbade6cc2ea6b0b0b17578af266dc3f669e959648f3306af993369"}, - {file = "reportlab-3.6.13-cp310-cp310-win_amd64.whl", hash = "sha256:65b441e22d8fe93154567a30662d8539e639b78142815afcaf92b388846eb3c1"}, - {file = "reportlab-3.6.13-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d59e62faa03003be81aa14d37ac34ea110e5ac59c8678fd4c0daa7d8b8f42096"}, - {file = "reportlab-3.6.13-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afb418409e0d323c6cb5e3be7ea4d14dfbf8a07eb03ab0b0062904cacf819878"}, - {file = "reportlab-3.6.13-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a477f652e6c417ad40387a8498d9ad827421006f156aab16f67adc9b81699a72"}, - {file = "reportlab-3.6.13-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95"}, - {file = "reportlab-3.6.13-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7efdf68e97e8fea8683bfc17f25747fefbda729b9018bc2e3221658ac41ee0bd"}, - {file = "reportlab-3.6.13-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28a8d9cf462e2b4c9e71abd0630f9ec245d88b976b283b0dbb4602c9ddb3938"}, - {file = "reportlab-3.6.13-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d95fc8bc177a009053548c6d851a513b2147c465a5e8fea82287ea22d6825c4e"}, - {file = "reportlab-3.6.13-cp311-cp311-win32.whl", hash = "sha256:48eadd93237c7e2739525c74cf6615dd6c1a767c839f4b0d7c12167dc0b09911"}, - {file = "reportlab-3.6.13-cp311-cp311-win_amd64.whl", hash = "sha256:cca2d4c783f985b91b98e80d09ac79b6ed3f317a729cba5ba86edfe5eb9a2d9c"}, - {file = "reportlab-3.6.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:149718c3eaee937f28094325f0dd9ae1add3172c2dacbb93ff5403f37c9d3c57"}, - {file = "reportlab-3.6.13-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8260c002e4845a5af65908d5ee2099bcc25a16c7646c5c417fa27f1e4b844bc1"}, - {file = "reportlab-3.6.13-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8e4983486d419daa45cade40874bb869976e27ba11f77fb4b9ae32417284ade7"}, - {file = "reportlab-3.6.13-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ea46fef07c588fef84d1164d4788fef322b39feb2bfb2df0a0706181dff79b8"}, - {file = "reportlab-3.6.13-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5949f3b4e207fa7901c0cc3b49470b2a3372617a47dfbc892db31c2b56af296"}, - {file = "reportlab-3.6.13-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0d91663d450c11404ec189ebc5a4abdf20f7c4eca5954a920427cdbf5601525"}, - {file = "reportlab-3.6.13-cp37-cp37m-win32.whl", hash = "sha256:269c59e508df08be498ab9e5278addb2cc16989677a03f800b17f8a31f8c5cc7"}, - {file = "reportlab-3.6.13-cp37-cp37m-win_amd64.whl", hash = "sha256:21d6b6bcdecee9c7ce047156d0553a30d736b8172629e4c0fcacab35ba261f3b"}, - {file = "reportlab-3.6.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:36568d3cb4101a210c4d821d9101635c2ef6e06bd649335938c01eb197f50c5d"}, - {file = "reportlab-3.6.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a043cff1781ddb2a0ba0e8e760a79fc5be2430957c4f2a1f51bd4528cc53178f"}, - {file = "reportlab-3.6.13-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbddadca6f08212732e83a60e30a42cfc7d2695892cedea208b3c3e7131c9993"}, - {file = "reportlab-3.6.13-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faeebde62f0f6ad86985bec5685411260393d2eb7ba907972da56af586b644e8"}, - {file = "reportlab-3.6.13-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ff09a0a1e5cef05309ac09dfc5185e8151d927bcf45470d2f540c96260f8a355"}, - {file = "reportlab-3.6.13-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbdbba1ec3498b17eefca14d424ee90bb95b53e1423ecb22f1c17733c3406559"}, - {file = "reportlab-3.6.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba6f533b262f4ee1636b754992bb2fb349df0500d765ac9be014a375c047f4db"}, - {file = "reportlab-3.6.13-cp38-cp38-win32.whl", hash = "sha256:7ff89011b5ee30209b3106641e3b7b4959f10aa6e9d6f3030205123c178f605d"}, - {file = "reportlab-3.6.13-cp38-cp38-win_amd64.whl", hash = "sha256:8f00175f8e12e6f7d3a01309de6d7008fac94a2cdce6837ad066f0961472c9e5"}, - {file = "reportlab-3.6.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a4dbc28fede7f504b9ac65ce9cbea35585e999d63f9fa68bc73f5a75b4929302"}, - {file = "reportlab-3.6.13-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9f869286fcefa7f8e89e38448309891ff110ad74f58a7317ec204f3d4b8ad5f5"}, - {file = "reportlab-3.6.13-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e13a4e81761636591f5b60104f6e1eec70832ffd9aa781db68d7ebb576970d4b"}, - {file = "reportlab-3.6.13-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fdac930dfdc6227720545ec44fdb396e92d53ec227a6f5ae58cc8cb9a6cbe89"}, - {file = "reportlab-3.6.13-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:701290747662d2b3be49fc0de33898ecc9ce3fafe0e2887d406e24693465e5ae"}, - {file = "reportlab-3.6.13-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7b690bc30f58931b0abd47635d93a43a82d67972e83a6511cc8adbcd7da25310"}, - {file = "reportlab-3.6.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6172481e8acffcf72042653e977281fbd807a41705a39456d92d2606d8b8c5e2"}, - {file = "reportlab-3.6.13-cp39-cp39-win32.whl", hash = "sha256:5a460f4c0c30bdf9d7bef46a816671a4386a9253670a53d35c694c666544261f"}, - {file = "reportlab-3.6.13-cp39-cp39-win_amd64.whl", hash = "sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb"}, - {file = "reportlab-3.6.13.tar.gz", hash = "sha256:6f75d33f7a3720cf47371ab63ced0f0ebd1aeb6db19386ae92f8977a09be9611"}, -] - -[package.dependencies] -pillow = ">=9.0.0" - -[package.extras] -fttextpath = ["freetype-py (>=2.3.0,<2.4)"] -rlpycairo = ["rlPyCairo (>=0.1.0)"] - [[package]] name = "requests" version = "2.31.0" @@ -3413,22 +3169,6 @@ docs = ["myst-parser[linkify]", "sphinx", "sphinx-rtd-theme"] release = ["twine"] test = ["pylint", "pytest", "pytest-black", "pytest-cov", "pytest-pylint"] -[[package]] -name = "svglib" -version = "1.5.1" -description = "A pure-Python library for reading and converting SVG" -optional = false -python-versions = ">=3.7" -files = [ - {file = "svglib-1.5.1.tar.gz", hash = "sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587"}, -] - -[package.dependencies] -cssselect2 = ">=0.2.0" -lxml = "*" -reportlab = "*" -tinycss2 = ">=0.6.0" - [[package]] name = "tinycss2" version = "1.2.1" @@ -3521,34 +3261,6 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] -[[package]] -name = "tzlocal" -version = "5.2" -description = "tzinfo object for the local timezone" -optional = false -python-versions = ">=3.8" -files = [ - {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, - {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, -] - -[package.dependencies] -tzdata = {version = "*", markers = "platform_system == \"Windows\""} - -[package.extras] -devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] - -[[package]] -name = "uritools" -version = "4.0.2" -description = "URI parsing, classification and composition" -optional = false -python-versions = ">=3.7" -files = [ - {file = "uritools-4.0.2-py3-none-any.whl", hash = "sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e"}, - {file = "uritools-4.0.2.tar.gz", hash = "sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573"}, -] - [[package]] name = "urllib3" version = "2.2.0" @@ -3758,27 +3470,6 @@ files = [ {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, ] -[[package]] -name = "xhtml2pdf" -version = "0.2.11" -description = "PDF generator using HTML and CSS" -optional = false -python-versions = "*" -files = [ - {file = "xhtml2pdf-0.2.11.tar.gz", hash = "sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465"}, -] - -[package.dependencies] -arabic-reshaper = ">=3.0.0" -html5lib = ">=1.0.1" -Pillow = ">=8.1.1" -pyHanko = ">=0.12.1" -pyhanko-certvalidator = ">=0.19.5" -pypdf = ">=3.1.0" -python-bidi = ">=0.4.2" -reportlab = ">=3.5.53,<4" -svglib = ">=1.2.1" - [[package]] name = "zipp" version = "3.17.0" @@ -3870,4 +3561,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "056d0d63f0f6cd8b38c21488a88189adad1e5526ba5218286b799556aba6a048" +content-hash = "73dd0e19c27e22d9d27f33de45a019bf019b896f7738eefb5283d105f1909dfd" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index 60856e87c96..4c837d265da 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -30,7 +30,6 @@ soupsieve = "^2.3.2.post1" sqlparse = "^0.4.4" typing-extensions = "^4.4.0" urllib3 = "^2.0.3" -xhtml2pdf = "^0.2.11" dnspython = "^2.1.0" django-password-validators = "^1.7.1" colorama = "^0.4.6" @@ -44,7 +43,6 @@ strenum = "^0.4.15" django-rest-knox = { git = "https://github.com/jazzband/django-rest-knox", rev = "dd7b062147bc4b9718e22d5acd6cf1301a1036b9" } # temp fix to pass build, remove later when https://github.com/xhtml2pdf/xhtml2pdf/issues/589 is solved -reportlab = "^3.6.13" # OpenTelemetry opentelemetry-sdk = "^1.19.0" @@ -93,9 +91,6 @@ addopts = "--cov --cov-branch --cov-report=term-missing:skip-covered -m 'not slo DJANGO_SETTINGS_MODULE = "rocky.settings_test" markers = ["slow: marks tests as slow"] -[tool.coverage.run] -omit = ["fmea/*"] - [tool.djlint] max_line_length = 120 blank_line_after_tag = "load,extends,include" diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index bcb448cb7da..99ef5a15edb 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -1,15 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ - --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -asn1crypto==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ - --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 @@ -340,39 +334,6 @@ coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 cssbeautifier==1.15.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7ab092581365698d1e270bdf114c268f567e63f6122dbb5f4dfc0e6ef64030ea cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -917,9 +878,6 @@ opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -oscrypto==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ - --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 overrides==7.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a \ --hash=sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49 @@ -1130,12 +1088,6 @@ pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pyhanko-certvalidator==0.26.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ - --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 -pyhanko==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ - --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858 \ --hash=sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d \ @@ -1150,9 +1102,6 @@ pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==4.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ - --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a pyphen==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa @@ -1186,9 +1135,6 @@ pytest-mock==3.12.0 ; python_version >= "3.10" and python_version < "4.0" \ pytest==7.4.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280 \ --hash=sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8 -python-bidi==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ - --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 @@ -1373,52 +1319,6 @@ regex==2023.12.25 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f72cbae7f6b01591f90814250e636065850c5926751af02bb48da94dfced7baa \ --hash=sha256:f7bc09bc9c29ebead055bcba136a67378f03d66bf359e87d0f7c759d6d4ffa31 \ --hash=sha256:ff100b203092af77d1a5a7abe085b3506b7eaaf9abf65b73b7d6905b6cb76988 -reportlab==3.6.13 ; python_version >= "3.10" and python_version < "4" \ - --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ - --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ - --hash=sha256:149718c3eaee937f28094325f0dd9ae1add3172c2dacbb93ff5403f37c9d3c57 \ - --hash=sha256:21d6b6bcdecee9c7ce047156d0553a30d736b8172629e4c0fcacab35ba261f3b \ - --hash=sha256:269c59e508df08be498ab9e5278addb2cc16989677a03f800b17f8a31f8c5cc7 \ - --hash=sha256:36568d3cb4101a210c4d821d9101635c2ef6e06bd649335938c01eb197f50c5d \ - --hash=sha256:3cb0da4975dbade6cc2ea6b0b0b17578af266dc3f669e959648f3306af993369 \ - --hash=sha256:48eadd93237c7e2739525c74cf6615dd6c1a767c839f4b0d7c12167dc0b09911 \ - --hash=sha256:57add04824bca89a130f9d428ace1b003cce4061386e0ec2a1b45b554ffe7aa3 \ - --hash=sha256:58ea3471b9b4b8e7952bd357e8487789da11213470be328ffb3e5b7d7690c2c7 \ - --hash=sha256:5a460f4c0c30bdf9d7bef46a816671a4386a9253670a53d35c694c666544261f \ - --hash=sha256:6172481e8acffcf72042653e977281fbd807a41705a39456d92d2606d8b8c5e2 \ - --hash=sha256:65b441e22d8fe93154567a30662d8539e639b78142815afcaf92b388846eb3c1 \ - --hash=sha256:6ea46fef07c588fef84d1164d4788fef322b39feb2bfb2df0a0706181dff79b8 \ - --hash=sha256:6f75d33f7a3720cf47371ab63ced0f0ebd1aeb6db19386ae92f8977a09be9611 \ - --hash=sha256:6fdac930dfdc6227720545ec44fdb396e92d53ec227a6f5ae58cc8cb9a6cbe89 \ - --hash=sha256:701290747662d2b3be49fc0de33898ecc9ce3fafe0e2887d406e24693465e5ae \ - --hash=sha256:753485bb2b18cbd11340e227e4aaf9bde3bb64f83406dfa011e92ad0231a42c9 \ - --hash=sha256:7b690bc30f58931b0abd47635d93a43a82d67972e83a6511cc8adbcd7da25310 \ - --hash=sha256:7efdf68e97e8fea8683bfc17f25747fefbda729b9018bc2e3221658ac41ee0bd \ - --hash=sha256:7ff89011b5ee30209b3106641e3b7b4959f10aa6e9d6f3030205123c178f605d \ - --hash=sha256:8260c002e4845a5af65908d5ee2099bcc25a16c7646c5c417fa27f1e4b844bc1 \ - --hash=sha256:8e4983486d419daa45cade40874bb869976e27ba11f77fb4b9ae32417284ade7 \ - --hash=sha256:8f00175f8e12e6f7d3a01309de6d7008fac94a2cdce6837ad066f0961472c9e5 \ - --hash=sha256:9f869286fcefa7f8e89e38448309891ff110ad74f58a7317ec204f3d4b8ad5f5 \ - --hash=sha256:a0330322c6c8123745ac7667fcc6ae3e0de3b73c15bdfaa28c788a9eaa0f50da \ - --hash=sha256:a043cff1781ddb2a0ba0e8e760a79fc5be2430957c4f2a1f51bd4528cc53178f \ - --hash=sha256:a477f652e6c417ad40387a8498d9ad827421006f156aab16f67adc9b81699a72 \ - --hash=sha256:a4dbc28fede7f504b9ac65ce9cbea35585e999d63f9fa68bc73f5a75b4929302 \ - --hash=sha256:afb418409e0d323c6cb5e3be7ea4d14dfbf8a07eb03ab0b0062904cacf819878 \ - --hash=sha256:b0d91663d450c11404ec189ebc5a4abdf20f7c4eca5954a920427cdbf5601525 \ - --hash=sha256:ba6f533b262f4ee1636b754992bb2fb349df0500d765ac9be014a375c047f4db \ - --hash=sha256:bbdbba1ec3498b17eefca14d424ee90bb95b53e1423ecb22f1c17733c3406559 \ - --hash=sha256:ca8eb7a6607f8a664187a330bab9f8d11c9f81ed885e063dfbb29a130944a72a \ - --hash=sha256:cca2d4c783f985b91b98e80d09ac79b6ed3f317a729cba5ba86edfe5eb9a2d9c \ - --hash=sha256:d59e62faa03003be81aa14d37ac34ea110e5ac59c8678fd4c0daa7d8b8f42096 \ - --hash=sha256:d95fc8bc177a009053548c6d851a513b2147c465a5e8fea82287ea22d6825c4e \ - --hash=sha256:dbddadca6f08212732e83a60e30a42cfc7d2695892cedea208b3c3e7131c9993 \ - --hash=sha256:e13a4e81761636591f5b60104f6e1eec70832ffd9aa781db68d7ebb576970d4b \ - --hash=sha256:e28a8d9cf462e2b4c9e71abd0630f9ec245d88b976b283b0dbb4602c9ddb3938 \ - --hash=sha256:e5949f3b4e207fa7901c0cc3b49470b2a3372617a47dfbc892db31c2b56af296 \ - --hash=sha256:e98965c6e60d76ff63989d9400ae8e65efd67c665d785b377f438f166a57c053 \ - --hash=sha256:f1993a68c0edc45895d3df350d01b0456efe79aaf309cef777762742be501f2a \ - --hash=sha256:faeebde62f0f6ad86985bec5685411260393d2eb7ba907972da56af586b644e8 \ - --hash=sha256:ff09a0a1e5cef05309ac09dfc5185e8151d927bcf45470d2f540c96260f8a355 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1590,8 +1490,6 @@ sqlparse==0.4.4 ; python_version >= "3.10" and python_version < "4.0" \ strenum==0.4.15 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff \ --hash=sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659 -svglib==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587 tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 @@ -1607,15 +1505,9 @@ typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 -tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ - --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e -uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ - --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 @@ -1739,8 +1631,6 @@ wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xhtml2pdf==0.2.11 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/rocky/requirements.txt b/rocky/requirements.txt index d6b0d29587a..972f0b83710 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -1,15 +1,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -arabic-reshaper==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3f71d5034bb694204a239a6f1ebcf323ac3c5b059de02259235e2016a1a5e2dc \ - --hash=sha256:ffcd13ba5ec007db71c072f5b23f420da92ac7f268512065d49e790e62237099 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed -asn1crypto==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c \ - --hash=sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67 attrs==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \ --hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1 @@ -284,39 +278,6 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 @@ -671,9 +632,6 @@ opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -oscrypto==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085 \ - --hash=sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4 phonenumbers==8.13.30 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:175fcaa89780c9cb6e089fe61de960396c9fc0c01845aea26400975fb10a8ea8 \ --hash=sha256:273a969a863e9e38d4944b26fc277f408dc9aa84faa04996266efa4021adea00 @@ -866,84 +824,21 @@ pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ pydyf==0.8.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:901186a2e9f897108139426a6486f5225bdcc9b70be2ec965f25111e42f8ac5d \ --hash=sha256:b22b1ef016141b54941ad66ed4e036a7bdff39c0b360993b283875c3f854dd9a -pyhanko-certvalidator==0.26.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:47fba8e9dbf846d766f2e0a453572dd4b25b2f1397847a31fe892c8eb00391f5 \ - --hash=sha256:e386c87e202ff1caacf5fd941da6c3509e79db54dbd7b43c6550ceebe5e67077 -pyhanko==0.21.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0a4de2c26a55c85ee6da79fc995a7fc6a61b7520270f03251caf8977ba27ccb8 \ - --hash=sha256:e5609fb8a0b8d60168999cffaa382f0361066cb429204ad2b76e84e6e7f5eb93 pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db -pypdf==4.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:871badcfe335dd68b6b563aa7646288c6b86f9ceecffb21e86341261d65d8173 \ - --hash=sha256:fe7c313c7e8074a516eae9d9df0111b7b9769f7a210479af7a342d27270ef81a pyphen==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:414c9355958ca3c6a3ff233f65678c245b8ecb56418fb291e2b93499d61cd510 \ --hash=sha256:596c8b3be1c1a70411ba5f6517d9ccfe3083c758ae2b94a45f2707346d8e66fa pypng==0.20220715.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4a43e969b8f5aaafb2a415536c1a8ec7e341cd6a3f957fd5b5f32a4cfeed902c \ --hash=sha256:739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1 -python-bidi==0.4.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:50eef6f6a0bbdd685f9e8c207f3c9050f5b578d0a46e37c76a9c4baea2cc2e13 \ - --hash=sha256:5347f71e82b3e9976dc657f09ded2bfe39ba8d6777ca81a5b2c56c30121c496e python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a pytz==2024.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \ --hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319 -pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ - --hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \ - --hash=sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df \ - --hash=sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741 \ - --hash=sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206 \ - --hash=sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27 \ - --hash=sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595 \ - --hash=sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62 \ - --hash=sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98 \ - --hash=sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696 \ - --hash=sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290 \ - --hash=sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9 \ - --hash=sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d \ - --hash=sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6 \ - --hash=sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867 \ - --hash=sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47 \ - --hash=sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486 \ - --hash=sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6 \ - --hash=sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3 \ - --hash=sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007 \ - --hash=sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938 \ - --hash=sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0 \ - --hash=sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c \ - --hash=sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735 \ - --hash=sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d \ - --hash=sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28 \ - --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ - --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ - --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ - --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ - --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ - --hash=sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0 \ - --hash=sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515 \ - --hash=sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c \ - --hash=sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c \ - --hash=sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924 \ - --hash=sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34 \ - --hash=sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43 \ - --hash=sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859 \ - --hash=sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673 \ - --hash=sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54 \ - --hash=sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a \ - --hash=sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b \ - --hash=sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab \ - --hash=sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa \ - --hash=sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c \ - --hash=sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585 \ - --hash=sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d \ - --hash=sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f qrcode==7.4.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:581dca7a029bcb2deef5d01068e39093e80ef00b4a61098a2182eac59d01643a \ --hash=sha256:9dd969454827e127dbd93696b20747239e6d540e082937c90f14ac95b30f5845 @@ -974,52 +869,6 @@ rcssmin==1.1.1 ; python_version >= "3.10" and python_version < "4.0" \ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 -reportlab==3.6.13 ; python_version >= "3.10" and python_version < "4" \ - --hash=sha256:0b94e4f65a5f77a631cc010c9a7892d69e33f3251b760639dcc76420e138ce95 \ - --hash=sha256:11a71c314183532d889ad4b3941f61c3fe4bfdda769c768a7f02d93cb69dd1bb \ - --hash=sha256:149718c3eaee937f28094325f0dd9ae1add3172c2dacbb93ff5403f37c9d3c57 \ - --hash=sha256:21d6b6bcdecee9c7ce047156d0553a30d736b8172629e4c0fcacab35ba261f3b \ - --hash=sha256:269c59e508df08be498ab9e5278addb2cc16989677a03f800b17f8a31f8c5cc7 \ - --hash=sha256:36568d3cb4101a210c4d821d9101635c2ef6e06bd649335938c01eb197f50c5d \ - --hash=sha256:3cb0da4975dbade6cc2ea6b0b0b17578af266dc3f669e959648f3306af993369 \ - --hash=sha256:48eadd93237c7e2739525c74cf6615dd6c1a767c839f4b0d7c12167dc0b09911 \ - --hash=sha256:57add04824bca89a130f9d428ace1b003cce4061386e0ec2a1b45b554ffe7aa3 \ - --hash=sha256:58ea3471b9b4b8e7952bd357e8487789da11213470be328ffb3e5b7d7690c2c7 \ - --hash=sha256:5a460f4c0c30bdf9d7bef46a816671a4386a9253670a53d35c694c666544261f \ - --hash=sha256:6172481e8acffcf72042653e977281fbd807a41705a39456d92d2606d8b8c5e2 \ - --hash=sha256:65b441e22d8fe93154567a30662d8539e639b78142815afcaf92b388846eb3c1 \ - --hash=sha256:6ea46fef07c588fef84d1164d4788fef322b39feb2bfb2df0a0706181dff79b8 \ - --hash=sha256:6f75d33f7a3720cf47371ab63ced0f0ebd1aeb6db19386ae92f8977a09be9611 \ - --hash=sha256:6fdac930dfdc6227720545ec44fdb396e92d53ec227a6f5ae58cc8cb9a6cbe89 \ - --hash=sha256:701290747662d2b3be49fc0de33898ecc9ce3fafe0e2887d406e24693465e5ae \ - --hash=sha256:753485bb2b18cbd11340e227e4aaf9bde3bb64f83406dfa011e92ad0231a42c9 \ - --hash=sha256:7b690bc30f58931b0abd47635d93a43a82d67972e83a6511cc8adbcd7da25310 \ - --hash=sha256:7efdf68e97e8fea8683bfc17f25747fefbda729b9018bc2e3221658ac41ee0bd \ - --hash=sha256:7ff89011b5ee30209b3106641e3b7b4959f10aa6e9d6f3030205123c178f605d \ - --hash=sha256:8260c002e4845a5af65908d5ee2099bcc25a16c7646c5c417fa27f1e4b844bc1 \ - --hash=sha256:8e4983486d419daa45cade40874bb869976e27ba11f77fb4b9ae32417284ade7 \ - --hash=sha256:8f00175f8e12e6f7d3a01309de6d7008fac94a2cdce6837ad066f0961472c9e5 \ - --hash=sha256:9f869286fcefa7f8e89e38448309891ff110ad74f58a7317ec204f3d4b8ad5f5 \ - --hash=sha256:a0330322c6c8123745ac7667fcc6ae3e0de3b73c15bdfaa28c788a9eaa0f50da \ - --hash=sha256:a043cff1781ddb2a0ba0e8e760a79fc5be2430957c4f2a1f51bd4528cc53178f \ - --hash=sha256:a477f652e6c417ad40387a8498d9ad827421006f156aab16f67adc9b81699a72 \ - --hash=sha256:a4dbc28fede7f504b9ac65ce9cbea35585e999d63f9fa68bc73f5a75b4929302 \ - --hash=sha256:afb418409e0d323c6cb5e3be7ea4d14dfbf8a07eb03ab0b0062904cacf819878 \ - --hash=sha256:b0d91663d450c11404ec189ebc5a4abdf20f7c4eca5954a920427cdbf5601525 \ - --hash=sha256:ba6f533b262f4ee1636b754992bb2fb349df0500d765ac9be014a375c047f4db \ - --hash=sha256:bbdbba1ec3498b17eefca14d424ee90bb95b53e1423ecb22f1c17733c3406559 \ - --hash=sha256:ca8eb7a6607f8a664187a330bab9f8d11c9f81ed885e063dfbb29a130944a72a \ - --hash=sha256:cca2d4c783f985b91b98e80d09ac79b6ed3f317a729cba5ba86edfe5eb9a2d9c \ - --hash=sha256:d59e62faa03003be81aa14d37ac34ea110e5ac59c8678fd4c0daa7d8b8f42096 \ - --hash=sha256:d95fc8bc177a009053548c6d851a513b2147c465a5e8fea82287ea22d6825c4e \ - --hash=sha256:dbddadca6f08212732e83a60e30a42cfc7d2695892cedea208b3c3e7131c9993 \ - --hash=sha256:e13a4e81761636591f5b60104f6e1eec70832ffd9aa781db68d7ebb576970d4b \ - --hash=sha256:e28a8d9cf462e2b4c9e71abd0630f9ec245d88b976b283b0dbb4602c9ddb3938 \ - --hash=sha256:e5949f3b4e207fa7901c0cc3b49470b2a3372617a47dfbc892db31c2b56af296 \ - --hash=sha256:e98965c6e60d76ff63989d9400ae8e65efd67c665d785b377f438f166a57c053 \ - --hash=sha256:f1993a68c0edc45895d3df350d01b0456efe79aaf309cef777762742be501f2a \ - --hash=sha256:faeebde62f0f6ad86985bec5685411260393d2eb7ba907972da56af586b644e8 \ - --hash=sha256:ff09a0a1e5cef05309ac09dfc5185e8151d927bcf45470d2f540c96260f8a355 requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1162,8 +1011,6 @@ sqlparse==0.4.4 ; python_version >= "3.10" and python_version < "4.0" \ strenum==0.4.15 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:878fb5ab705442070e4dd1929bb5e2249511c0bcf2b0eeacf3bcd80875c82eff \ --hash=sha256:a30cda4af7cc6b5bf52c8055bc4bf4b2b6b14a93b574626da33df53cf7740659 -svglib==1.5.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587 tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 @@ -1173,15 +1020,9 @@ typer==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ +tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 -tzlocal==5.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8 \ - --hash=sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e -uritools==4.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573 \ - --hash=sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 @@ -1302,8 +1143,6 @@ wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xhtml2pdf==0.2.11 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1b81630a10eba833ddeda16933fd6625471f16b93c352d954f552e5a608e7465 zipp==3.17.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 886682ff6a9..8142dedb1c1 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-19 15:41+0000\n" +"POT-Creation-Date: 2024-02-22 06:44+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -549,659 +549,6 @@ msgid "" "more details." msgstr "" -#: fmea/forms.py -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "Failure mode" -msgstr "" - -#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_detail.html -#: katalogus/templates/boefje_detail.html -#: katalogus/templates/normalizer_detail.html -#: reports/report_types/aggregate_organisation_report/appendix.html -#: reports/report_types/vulnerability_report/report.html -#: reports/templates/summary/report_summary.html tools/forms/finding_type.py -#: rocky/templates/oois/ooi_detail.html -#: rocky/templates/oois/ooi_detail_findings_list.html rocky/templates/scan.html -msgid "Description" -msgstr "" - -#: fmea/forms.py -msgid "Frequency Level" -msgstr "" - -#: fmea/forms.py -msgid "Detectability Level" -msgstr "" - -#: fmea/forms.py -msgid "Effect(s)" -msgstr "" - -#: fmea/forms.py -msgid "Describe in one sentence what type of failure mode you are creating." -msgstr "" - -#: fmea/forms.py -msgid "Describe the failure mode in details." -msgstr "" - -#: fmea/forms.py -msgid "" -"From 1 to 5, how often does this failure mode occurs. 1: Almost unthinkable " -"and 5: occurs daily." -msgstr "" - -#: fmea/forms.py -msgid "" -"Is this failure mode easy detectable? Give it a score from 1 to 5. 1: always " -"detectable and 5: almost undetectable." -msgstr "" - -#: fmea/forms.py -msgid "Describe the type of failure mode" -msgstr "" - -#: fmea/forms.py -msgid "explanation-failure-mode" -msgstr "" - -#: fmea/forms.py -msgid "Describe in more detail what the failure mode is about." -msgstr "" - -#: fmea/forms.py -msgid "explanation-description" -msgstr "" - -#: fmea/forms.py -msgid "explanation-frequency-level" -msgstr "" - -#: fmea/forms.py -msgid "explanation-detectability_level" -msgstr "" - -#: fmea/forms.py -msgid "You must at least set a failure mode." -msgstr "" - -#: fmea/forms.py -msgid "Choose a frequency level." -msgstr "" - -#: fmea/forms.py -msgid "Choose a detectability level." -msgstr "" - -#: fmea/forms.py -msgid "Choose at least one effect." -msgstr "" - -#: fmea/forms.py -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -msgid "Affected Department" -msgstr "" - -#: fmea/forms.py -msgid "Affected Objects" -msgstr "" - -#: fmea/forms.py -msgid "Choose a failure mode which applies to " -msgstr "" - -#: fmea/forms.py -msgid "When this failure mode occurs, which department is affected?" -msgstr "" - -#: fmea/forms.py -msgid "Which objects does this failure mode affect when it occurs?" -msgstr "" - -#: fmea/forms.py -msgid "explanation-affected-ooi-type" -msgstr "" - -#: fmea/forms.py fmea/templates/fmea/fmea_failure_mode_effect_detail.html -msgid "Effect" -msgstr "" - -#: fmea/forms.py -msgid "Severity Level" -msgstr "" - -#: fmea/forms.py -msgid "Name a possible effect of any type of failure mode that can occur." -msgstr "" - -#: fmea/forms.py -msgid "" -"Describe the severity of this effect ex. 1: not severe and 5: catastrophic" -msgstr "" - -#: fmea/forms.py -msgid "Describe a possible effect for FMEA" -msgstr "" - -#: fmea/forms.py -msgid "explanation-effect" -msgstr "" - -#: fmea/forms.py -msgid "explanation-severity-level" -msgstr "" - -#: fmea/forms.py -msgid "The effect is required." -msgstr "" - -#: fmea/forms.py -msgid "This effect already exists." -msgstr "" - -#: fmea/forms.py -msgid "Choose a severity level." -msgstr "" - -#: fmea/models.py -msgid "Finances" -msgstr "" - -#: fmea/models.py -msgid "Marketing" -msgstr "" - -#: fmea/models.py -msgid "Human Resources" -msgstr "" - -#: fmea/models.py -msgid "Research & Development" -msgstr "" - -#: fmea/models.py -msgid "Administration" -msgstr "" - -#: fmea/models.py -#: reports/report_types/aggregate_organisation_report/appendix.html -#: reports/templates/summary/service_health.html rocky/templates/footer.html -#: rocky/templates/health.html -msgid "Service" -msgstr "" - -#: fmea/models.py -msgid "Level 1: Not Severe" -msgstr "" - -#: fmea/models.py -msgid "Level 2: Harmful" -msgstr "" - -#: fmea/models.py -msgid "Level 3: Severe" -msgstr "" - -#: fmea/models.py -msgid "Level 4: Very Harmful" -msgstr "" - -#: fmea/models.py -msgid "Level 5: Catastrophic" -msgstr "" - -#: fmea/models.py -msgid "Level 1: Very Rare. Incident (almost) never occurs, almost unthinkable." -msgstr "" - -#: fmea/models.py -msgid "Level 2: Rare. Incidents occur less than once a year (3-5)." -msgstr "" - -#: fmea/models.py -msgid "Level 3: Occurs. Incidents occur several times a year." -msgstr "" - -#: fmea/models.py -msgid "Level 4: Regularly. Incidents occur weekly." -msgstr "" - -#: fmea/models.py -msgid "Level 5: Frequent. Incidents occur daily." -msgstr "" - -#: fmea/models.py -msgid "" -"Level 1: Always Detectable. Incident (almost) never occurs, almost " -"unthinkable." -msgstr "" - -#: fmea/models.py -msgid "" -"Level 2: Usually Detectable. Incidents occur less than once a year (3-5)." -msgstr "" - -#: fmea/models.py -msgid "Level 3: Detectable. Failure mode is detectable with effort." -msgstr "" - -#: fmea/models.py -msgid "Level 4: Poorly Detectable. Detecting the failure mode is difficult." -msgstr "" - -#: fmea/models.py -msgid "" -"Level 5: Almost Undetectable. Failure mode detection is very difficult or " -"nearly impossible." -msgstr "" - -#: fmea/models.py fmea/templates/fmea/fmea_failure_mode_list.html -#: fmea/views/view_helpers.py -msgid "Failure modes" -msgstr "" - -#: fmea/models.py fmea/views/view_helpers.py -msgid "Failure Mode Affected Objects" -msgstr "" - -#: fmea/templates/fmea/fmea_department_heatmap.html -msgid "FMEA Departments Heatmap:" -msgstr "" - -#: fmea/templates/fmea/fmea_department_heatmap.html -msgid "No data to build heatmap" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -msgid "Failure mode affected object table:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -msgid "Affected Object" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -#: fmea/templates/fmea/fmea_failure_mode_detail.html -#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -#: fmea/templates/fmea/fmea_failure_mode_list.html -#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py -#: fmea/views/fmea_failure_mode_effect.py -#: katalogus/templates/plugin_settings_list.html -#: rocky/templates/organizations/organization_member_list.html -#: rocky/templates/organizations/organization_settings.html -#: rocky/views/ooi_edit.py rocky/views/organization_edit.py -msgid "Edit" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_detail.html -msgid "Failure mode affected objects cannot be found." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -msgid "Define which objects are affected for a failure mode" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -msgid "Failure mode affected objects" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -#: fmea/templates/fmea/fmea_failure_mode_effect_form.html -#: fmea/templates/fmea/fmea_failure_mode_form.html -msgid "Save" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -#: fmea/templates/fmea/fmea_failure_mode_effect_form.html -#: fmea/templates/fmea/fmea_failure_mode_form.html -#: onboarding/templates/account/step_2a_organization_setup.html -#: onboarding/templates/account/step_4_account_setup_admin.html -#: onboarding/templates/account/step_5_account_setup_red_teamer.html -#: onboarding/templates/account/step_6_account_setup_client.html -#: rocky/templates/forms/json_schema_form.html -#: rocky/templates/organizations/organization_add.html -#: rocky/templates/organizations/organization_member_add.html -#: rocky/templates/organizations/organization_member_add_account_type.html -#: rocky/templates/partials/elements/ooi_detail_settings.html -#: rocky/templates/partials/elements/ooi_report_settings.html -#: rocky/templates/partials/form/indemnification_add_form.html -#: rocky/templates/partials/task_history.html -#: rocky/templates/two_factor/_wizard_actions.html -msgid "Submit" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "No failure mode yet defined." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -msgid "To add affected objects to a failure mode, first create one." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_form.html -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Create failure mode" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -msgid "Failure mode affected objects table:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -msgid "No failure mode affected objects yet defined." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_affected_object_list.html -msgid "Create failure mode Affected Objects" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_departments.html -msgid "Departments failure modes" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_departments.html -msgid "Failure modes and affected departments table:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_departments.html -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Failure Mode" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_departments.html -msgid "Affected Departments" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_departments.html -msgid "Nothing found." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "Failure mode properties" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html -msgid "Properties" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "Risk class" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "Frequency level" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "Detectability level" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_detail.html -msgid "" -"\n" -" Effect and severity level\n" -" " -msgid_plural "" -"\n" -" Effects and severity levels\n" -" " -msgstr[0] "" -msgstr[1] "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -msgid "Failure mode effect" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html -msgid "Failure mode effect properties" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_detail.html -#: rocky/templates/crisis_room/crisis_room_findings_block.html -#: rocky/templates/findings/finding_list.html -#: rocky/templates/oois/ooi_detail_findings_list.html -#: rocky/templates/oois/ooi_detail_findings_overview.html -#: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/partials/ooi_report_severity_totals_table.html -msgid "Severity" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_form.html -msgid "FMEA effect and severity" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_form.html -msgid "FMEA effect" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -msgid "Failure mode effects table:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -msgid "Severity level" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -msgid "No failure mode effect yet defined." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_effect_list.html -msgid "Create a failure mode effect" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_form.html -#: fmea/templates/fmea/fmea_index.html -msgid "Create a new failure mode" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_form.html -msgid "Failure mode and effects" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_form.html -msgid "No failure mode effects created." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_form.html -msgid "" -"First create failure mode effects which can be added later to a failure mode." -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_form.html -#: fmea/templates/fmea/fmea_index.html -msgid "Create failure mode effects" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Failure mode table:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Risk Class" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -#: reports/report_types/vulnerability_report/report.html -#: rocky/templates/crisis_room/crisis_room_findings_block.html -#: rocky/templates/findings/finding_list.html -#: rocky/templates/organizations/organization_crisis_room.html -#: rocky/templates/partials/ooi_report_findings_block_table.html -#: rocky/templates/partials/task_history.html -#: rocky/templates/tasks/partials/boefje_task_history.html -#: rocky/templates/tasks/partials/normalizer_task_history.html -msgid "Details" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Sluit details" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Description:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Frequency level:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "Detectability level:" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_list.html -msgid "" -"\n" -"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffect and severity level\n" -"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t" -msgid_plural "" -"\n" -"\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tEffects and severity levels\n" -"\t\t\t\t\t\t\t\t\t\t\t\t\t\t" -msgstr[0] "" -msgstr[1] "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Failure mode report" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -#: reports/report_types/aggregate_organisation_report/report_design.html -#: reports/report_types/aggregate_organisation_report/summary.html -#: reports/report_types/multi_organization_report/summary.html -#: reports/templates/summary/report_summary.html -#: rocky/templates/partials/ooi_report_severity_totals.html -#: rocky/views/ooi_tree.py -msgid "Summary" -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Failure mode: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Severity: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Detectability: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Frequency: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Effect: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Description: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Affected Departments: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Affected OOI's: " -msgstr "" - -#: fmea/templates/fmea/fmea_failure_mode_report.html -msgid "Report cannot be viewed, failure mode not found." -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "FMEA introduction" -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "" -"FMEA (failure mode and effective analysis) is a step-by-step approach for " -"collecting knowledge about possible points of failure in a design, " -"manufacturing process, product or service." -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "" -"Failure mode (FM) refers to the way in which something might break down and " -"includes potential errors that may occur, especially errors that may affect " -"a system. Effective analysis (EA) involves deciphering the consequences of " -"those break downs by making sure that all failures can be detected, " -"determining how frequently a failure might occur and identifying which " -"potential failures should be prioritized." -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "Create affected objects of a failure mode" -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "View all failure modes" -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "View all failure mode effects" -msgstr "" - -#: fmea/templates/fmea/fmea_index.html -msgid "View all affected objects for a failure modes" -msgstr "" - -#: fmea/templates/fmea/fmea_index.html fmea/views/fmea_analytics.py -msgid "Heatmap" -msgstr "" - -#: fmea/tools.py -msgid "--- Select an option ----" -msgstr "" - -#: fmea/views/fmea_affected_objects.py -msgid "Failure mode affected objects successfully created." -msgstr "" - -#: fmea/views/fmea_affected_objects.py fmea/views/fmea_failure_mode.py -#: fmea/views/fmea_failure_mode_effect.py -msgid "Create" -msgstr "" - -#: fmea/views/fmea_affected_objects.py -msgid "Treeobjects successfully added." -msgstr "" - -#: fmea/views/fmea_affected_objects.py -msgid "Please select a department or ooi." -msgstr "" - -#: fmea/views/fmea_analytics.py onboarding/templates/step_4_report.html -msgid "Report" -msgstr "" - -#: fmea/views/fmea_failure_mode.py -msgid "Failure mode successfully created." -msgstr "" - -#: fmea/views/fmea_failure_mode_effect.py -msgid "Failure mode effect successfully created." -msgstr "" - -#: fmea/views/view_helpers.py rocky/templates/dashboard_redteam.html -msgid "FMEA" -msgstr "" - -#: fmea/views/view_helpers.py -msgid "Failure mode effects" -msgstr "" - #: katalogus/forms/katalogus_filter.py msgid "Show all" msgstr "" @@ -1269,6 +616,16 @@ msgstr "" msgid "Scan level" msgstr "" +#: katalogus/templates/boefje_detail.html +#: katalogus/templates/normalizer_detail.html +#: reports/report_types/aggregate_organisation_report/appendix.html +#: reports/report_types/vulnerability_report/report.html +#: reports/templates/summary/report_summary.html tools/forms/finding_type.py +#: rocky/templates/oois/ooi_detail.html +#: rocky/templates/oois/ooi_detail_findings_list.html rocky/templates/scan.html +msgid "Description" +msgstr "" + #: katalogus/templates/boefje_detail.html #: katalogus/templates/normalizer_detail.html msgid "Consumes" @@ -1706,6 +1063,13 @@ msgstr "" msgid "No" msgstr "" +#: katalogus/templates/plugin_settings_list.html +#: rocky/templates/organizations/organization_member_list.html +#: rocky/templates/organizations/organization_settings.html +#: rocky/views/ooi_edit.py rocky/views/organization_edit.py +msgid "Edit" +msgstr "" + #: katalogus/views/change_clearance_level.py msgid "Session has terminated, please select objects again." msgstr "" @@ -1906,6 +1270,22 @@ msgstr "" msgid "Organization details" msgstr "" +#: onboarding/templates/account/step_2a_organization_setup.html +#: onboarding/templates/account/step_4_account_setup_admin.html +#: onboarding/templates/account/step_5_account_setup_red_teamer.html +#: onboarding/templates/account/step_6_account_setup_client.html +#: rocky/templates/forms/json_schema_form.html +#: rocky/templates/organizations/organization_add.html +#: rocky/templates/organizations/organization_member_add.html +#: rocky/templates/organizations/organization_member_add_account_type.html +#: rocky/templates/partials/elements/ooi_detail_settings.html +#: rocky/templates/partials/elements/ooi_report_settings.html +#: rocky/templates/partials/form/indemnification_add_form.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/two_factor/_wizard_actions.html +msgid "Submit" +msgstr "" + #: onboarding/templates/account/step_2a_organization_update.html #: rocky/templates/organizations/organization_add.html msgid "" @@ -2597,6 +1977,10 @@ msgstr "" msgid "Suggested plugins" msgstr "" +#: onboarding/templates/step_4_report.html +msgid "Report" +msgstr "" + #: onboarding/templates/step_4_report.html msgid "Boefjes are scanning" msgstr "" @@ -2744,6 +2128,12 @@ msgstr "" msgid "Service Versions and Health" msgstr "" +#: reports/report_types/aggregate_organisation_report/appendix.html +#: reports/templates/summary/service_health.html rocky/templates/footer.html +#: rocky/templates/health.html +msgid "Service" +msgstr "" + #: reports/report_types/aggregate_organisation_report/appendix.html #: reports/templates/summary/service_health.html rocky/templates/health.html msgid "Version" @@ -3001,6 +2391,15 @@ msgstr "" msgid "Observed at:" msgstr "" +#: reports/report_types/aggregate_organisation_report/report_design.html +#: reports/report_types/aggregate_organisation_report/summary.html +#: reports/report_types/multi_organization_report/summary.html +#: reports/templates/summary/report_summary.html +#: rocky/templates/partials/ooi_report_severity_totals.html +#: rocky/views/ooi_tree.py +msgid "Summary" +msgstr "" + #: reports/report_types/aggregate_organisation_report/report_design.html #: reports/report_types/vulnerability_report/report.html msgid "vulnerabilities on this system" @@ -3607,6 +3006,17 @@ msgstr "" msgid "Occurrences" msgstr "" +#: reports/report_types/vulnerability_report/report.html +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_findings_block_table.html +#: rocky/templates/partials/task_history.html +#: rocky/templates/tasks/partials/boefje_task_history.html +#: rocky/templates/tasks/partials/normalizer_task_history.html +msgid "Details" +msgstr "" + #: reports/report_types/vulnerability_report/report.html #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/findings/finding_list.html @@ -4615,6 +4025,15 @@ msgstr "" msgid " Finding Details" msgstr "" +#: rocky/templates/crisis_room/crisis_room_findings_block.html +#: rocky/templates/findings/finding_list.html +#: rocky/templates/oois/ooi_detail_findings_list.html +#: rocky/templates/oois/ooi_detail_findings_overview.html +#: rocky/templates/organizations/organization_crisis_room.html +#: rocky/templates/partials/ooi_report_severity_totals_table.html +msgid "Severity" +msgstr "" + #: rocky/templates/crisis_room/crisis_room_findings_block.html #: rocky/templates/organizations/organization_list.html msgid "There were no organizations found for your user account" diff --git a/rocky/rocky/templates/dashboard_redteam.html b/rocky/rocky/templates/dashboard_redteam.html index 690e2c707e3..e93f466e639 100644 --- a/rocky/rocky/templates/dashboard_redteam.html +++ b/rocky/rocky/templates/dashboard_redteam.html @@ -36,9 +36,6 @@
  1. {% translate "Objects" %}
  2. -
  3. - {% translate "FMEA" %} -
  4. diff --git a/rocky/tools/models.py b/rocky/tools/models.py index 56cb9b62555..cc5cbb41dd2 100644 --- a/rocky/tools/models.py +++ b/rocky/tools/models.py @@ -59,7 +59,6 @@ "keiko", "octopoes", "rocky", - "fmea", ] From ce6cb9b13a6c6bd300a2140c5b658fe143be2b34 Mon Sep 17 00:00:00 2001 From: ammar92 Date: Thu, 22 Feb 2024 13:41:09 +0100 Subject: [PATCH 63/85] Update packages (#2552) --- boefjes/poetry.lock | 244 +++++++++-------- boefjes/requirements-dev.txt | 236 ++++++++-------- boefjes/requirements.txt | 230 ++++++++-------- bytes/poetry.lock | 292 +++++++++----------- bytes/pyproject.toml | 2 - bytes/requirements-dev.txt | 274 ++++++++----------- bytes/requirements.txt | 230 ++++++++-------- cveapi/poetry.lock | 15 +- cveapi/pyproject.toml | 1 - cveapi/requirements.txt | 12 +- keiko/poetry.lock | 517 ++++++++++++++++++----------------- keiko/pyproject.toml | 1 - keiko/requirements-dev.txt | 494 ++++++++++++++++----------------- keiko/requirements.txt | 458 +++++++++++++++---------------- mula/poetry.lock | 292 ++++++++++---------- mula/pyproject.toml | 1 - mula/requirements-dev.txt | 282 +++++++++---------- mula/requirements.txt | 158 +++++------ poetry.lock | 389 +++++++++++++------------- requirements.txt | 349 ++++++++++++----------- rocky/poetry.lock | 254 ++++++++--------- rocky/pyproject.toml | 1 - rocky/requirements-dev.txt | 236 ++++++++-------- rocky/requirements.txt | 110 ++++---- 24 files changed, 2509 insertions(+), 2569 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index e6ff7cbf096..07f742a2540 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -167,13 +167,13 @@ files = [ [[package]] name = "anyio" -version = "4.2.0" +version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [package.dependencies] @@ -512,43 +512,43 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", [[package]] name = "cryptography" -version = "42.0.3" +version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, - {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, - {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, - {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, - {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, - {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, - {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, + {file = "cryptography-42.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449"}, + {file = "cryptography-42.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b"}, + {file = "cryptography-42.0.4-cp37-abi3-win32.whl", hash = "sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925"}, + {file = "cryptography-42.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923"}, + {file = "cryptography-42.0.4-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0"}, + {file = "cryptography-42.0.4-cp39-abi3-win32.whl", hash = "sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129"}, + {file = "cryptography-42.0.4-cp39-abi3-win_amd64.whl", hash = "sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660"}, + {file = "cryptography-42.0.4.tar.gz", hash = "sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb"}, ] [package.dependencies] @@ -882,69 +882,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.1" +version = "1.62.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, - {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, - {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, - {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, - {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, - {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, - {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, - {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, - {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, - {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, - {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, - {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, - {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, - {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, - {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, - {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, - {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, - {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, - {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, - {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, - {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, - {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, - {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, - {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, + {file = "grpcio-1.62.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271"}, + {file = "grpcio-1.62.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6"}, + {file = "grpcio-1.62.0-cp310-cp310-win32.whl", hash = "sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc"}, + {file = "grpcio-1.62.0-cp310-cp310-win_amd64.whl", hash = "sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa"}, + {file = "grpcio-1.62.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f"}, + {file = "grpcio-1.62.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e"}, + {file = "grpcio-1.62.0-cp311-cp311-win32.whl", hash = "sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd"}, + {file = "grpcio-1.62.0-cp311-cp311-win_amd64.whl", hash = "sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334"}, + {file = "grpcio-1.62.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8"}, + {file = "grpcio-1.62.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388"}, + {file = "grpcio-1.62.0-cp312-cp312-win32.whl", hash = "sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701"}, + {file = "grpcio-1.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842"}, + {file = "grpcio-1.62.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9"}, + {file = "grpcio-1.62.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b"}, + {file = "grpcio-1.62.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b"}, + {file = "grpcio-1.62.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35"}, + {file = "grpcio-1.62.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38"}, + {file = "grpcio-1.62.0-cp38-cp38-win32.whl", hash = "sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe"}, + {file = "grpcio-1.62.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270"}, + {file = "grpcio-1.62.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170"}, + {file = "grpcio-1.62.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a"}, + {file = "grpcio-1.62.0-cp39-cp39-win32.whl", hash = "sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93"}, + {file = "grpcio-1.62.0-cp39-cp39-win_amd64.whl", hash = "sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5"}, + {file = "grpcio-1.62.0.tar.gz", hash = "sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.1)"] +protobuf = ["grpcio-tools (>=1.62.0)"] [[package]] name = "h11" @@ -959,13 +959,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.3" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, - {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -976,7 +976,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.24.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpretty" @@ -1782,22 +1782,22 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -1970,19 +1970,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pydicom" version = "2.4.4" @@ -2059,13 +2063,13 @@ tests = ["pyfakefs", "pytest", "sqlalchemy"] [[package]] name = "pytest" -version = "8.0.0" +version = "8.0.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, + {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, ] [package.dependencies] @@ -2554,13 +2558,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -2715,13 +2719,13 @@ files = [ [[package]] name = "xlsxwriter" -version = "3.1.9" +version = "3.2.0" description = "A Python module for creating Excel XLSX files." optional = false python-versions = ">=3.6" files = [ - {file = "XlsxWriter-3.1.9-py3-none-any.whl", hash = "sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0"}, - {file = "XlsxWriter-3.1.9.tar.gz", hash = "sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929"}, + {file = "XlsxWriter-3.2.0-py3-none-any.whl", hash = "sha256:ecfd5405b3e0e228219bcaf24c2ca0915e012ca9464a14048021d21a995d490e"}, + {file = "XlsxWriter-3.2.0.tar.gz", hash = "sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c"}, ] [[package]] diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 051552c0ebf..244ef1dec57 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -90,9 +90,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ ansicolors==1.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187 \ --hash=sha256:99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -270,39 +270,39 @@ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 +cryptography==42.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \ + --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \ + --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \ + --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \ + --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \ + --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \ + --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \ + --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \ + --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \ + --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \ + --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \ + --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \ + --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \ + --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \ + --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \ + --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \ + --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \ + --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \ + --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \ + --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \ + --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \ + --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \ + --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \ + --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \ + --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \ + --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \ + --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \ + --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \ + --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \ + --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \ + --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \ + --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449 decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -470,67 +470,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ - --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -913,18 +913,18 @@ pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -1027,9 +1027,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -1056,9 +1056,9 @@ pynetdicom==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b -pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ - --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 +pytest==8.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae \ + --hash=sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 @@ -1251,9 +1251,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d @@ -1336,9 +1336,9 @@ wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xlsxwriter==3.1.9 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0 \ - --hash=sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929 +xlsxwriter==3.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c \ + --hash=sha256:ecfd5405b3e0e228219bcaf24c2ca0915e012ca9464a14048021d21a995d490e yarl==1.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51 \ --hash=sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce \ diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index 833ce3dc0e6..ab46041801f 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -90,9 +90,9 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ ansicolors==1.1.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:00d2dde5a675579325902536738dd27e4fac1fd68f773fe36c21044eb559e187 \ --hash=sha256:99f94f5e3348a0bcd43c82e5fc4414013ccc19d70bd939ad71e0133ce9c372e0 -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -270,39 +270,39 @@ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ configparser==6.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:900ea2bb01b2540b1a644ad3d5351e9b961a4a012d4732f619375fb8f641ee19 \ --hash=sha256:ec914ab1e56c672de1f5c3483964e68f71b34e457904b7b76e06b922aec067a8 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 +cryptography==42.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \ + --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \ + --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \ + --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \ + --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \ + --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \ + --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \ + --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \ + --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \ + --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \ + --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \ + --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \ + --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \ + --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \ + --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \ + --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \ + --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \ + --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \ + --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \ + --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \ + --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \ + --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \ + --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \ + --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \ + --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \ + --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \ + --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \ + --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \ + --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \ + --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \ + --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \ + --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449 decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -470,67 +470,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and (platform_machine == "aarch64" or --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ - --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -907,18 +907,18 @@ pillow==10.2.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1 \ --hash=sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48 \ --hash=sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -1021,9 +1021,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -1236,9 +1236,9 @@ tldextract==3.5.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d @@ -1321,9 +1321,9 @@ wrapt==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d \ --hash=sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a \ --hash=sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4 -xlsxwriter==3.1.9 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0 \ - --hash=sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929 +xlsxwriter==3.2.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:9977d0c661a72866a61f9f7a809e25ebbb0fb7036baa3b9fe74afcfca6b3cb8c \ + --hash=sha256:ecfd5405b3e0e228219bcaf24c2ca0915e012ca9464a14048021d21a995d490e yarl==1.9.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51 \ --hash=sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce \ diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 1a0a08f1f0e..637574cca0c 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -32,13 +32,13 @@ files = [ [[package]] name = "anyio" -version = "4.2.0" +version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [package.dependencies] @@ -133,13 +133,13 @@ files = [ [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -332,43 +332,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.3" +version = "42.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, - {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, - {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, - {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, - {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, - {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, - {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, - {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, - {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, - {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, - {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, - {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, - {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, - {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, + {file = "cryptography-42.0.4-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449"}, + {file = "cryptography-42.0.4-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b"}, + {file = "cryptography-42.0.4-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824"}, + {file = "cryptography-42.0.4-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b"}, + {file = "cryptography-42.0.4-cp37-abi3-win32.whl", hash = "sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925"}, + {file = "cryptography-42.0.4-cp37-abi3-win_amd64.whl", hash = "sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923"}, + {file = "cryptography-42.0.4-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9"}, + {file = "cryptography-42.0.4-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929"}, + {file = "cryptography-42.0.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0"}, + {file = "cryptography-42.0.4-cp39-abi3-win32.whl", hash = "sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129"}, + {file = "cryptography-42.0.4-cp39-abi3-win_amd64.whl", hash = "sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20"}, + {file = "cryptography-42.0.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b"}, + {file = "cryptography-42.0.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660"}, + {file = "cryptography-42.0.4.tar.gz", hash = "sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb"}, ] [package.dependencies] @@ -548,69 +548,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.1" +version = "1.62.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, - {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, - {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, - {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, - {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, - {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, - {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, - {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, - {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, - {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, - {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, - {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, - {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, - {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, - {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, - {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, - {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, - {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, - {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, - {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, - {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, - {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, - {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, - {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, + {file = "grpcio-1.62.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271"}, + {file = "grpcio-1.62.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6"}, + {file = "grpcio-1.62.0-cp310-cp310-win32.whl", hash = "sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc"}, + {file = "grpcio-1.62.0-cp310-cp310-win_amd64.whl", hash = "sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa"}, + {file = "grpcio-1.62.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f"}, + {file = "grpcio-1.62.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e"}, + {file = "grpcio-1.62.0-cp311-cp311-win32.whl", hash = "sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd"}, + {file = "grpcio-1.62.0-cp311-cp311-win_amd64.whl", hash = "sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334"}, + {file = "grpcio-1.62.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8"}, + {file = "grpcio-1.62.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388"}, + {file = "grpcio-1.62.0-cp312-cp312-win32.whl", hash = "sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701"}, + {file = "grpcio-1.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842"}, + {file = "grpcio-1.62.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9"}, + {file = "grpcio-1.62.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b"}, + {file = "grpcio-1.62.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b"}, + {file = "grpcio-1.62.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35"}, + {file = "grpcio-1.62.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38"}, + {file = "grpcio-1.62.0-cp38-cp38-win32.whl", hash = "sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe"}, + {file = "grpcio-1.62.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270"}, + {file = "grpcio-1.62.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170"}, + {file = "grpcio-1.62.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a"}, + {file = "grpcio-1.62.0-cp39-cp39-win32.whl", hash = "sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93"}, + {file = "grpcio-1.62.0-cp39-cp39-win_amd64.whl", hash = "sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5"}, + {file = "grpcio-1.62.0.tar.gz", hash = "sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.1)"] +protobuf = ["grpcio-tools (>=1.62.0)"] [[package]] name = "h11" @@ -625,13 +625,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.3" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, - {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -642,7 +642,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.24.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpx" @@ -709,52 +709,6 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, -] - [[package]] name = "mako" version = "1.3.2" @@ -1148,22 +1102,22 @@ twisted = ["twisted"] [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -1336,19 +1290,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pynacl" version = "1.5.0" @@ -1391,13 +1349,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "8.0.0" +version = "8.0.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, + {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, ] [package.dependencies] @@ -1683,13 +1641,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -1814,4 +1772,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "9c6f25546e0bdd3e9801988816e769c27694011d5f7acd8e439f8a97b52ed5d5" +content-hash = "f8bb766f3f0631a32e209db60cb021fb022191997b624b07e97db609d050831f" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index 1a5fca52604..a03af34ca88 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -12,7 +12,6 @@ anyio = "^4.2.0" asgiref = "^3.5.2" bcrypt = "^4.0.1" cachetools = "^5.3.1" -certifi = "^2023.7.22" cffi = "^1.15.1" charset-normalizer = "^3.1.0" click = "^8.1.3" @@ -59,7 +58,6 @@ python-multipart = "^0.0.9" [tool.poetry.group.dev.dependencies] iniconfig = "^2.0.0" -lazy-object-proxy = "^1.7.1" packaging = "^23.0" pluggy = "^1.0.0" pyparsing = "^3.0.9" diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index 145dcb7486b..765f2f772ad 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -44,9 +44,9 @@ bcrypt==4.1.2 ; python_version >= "3.10" and python_version < "4.0" \ cachetools==5.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \ --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -197,39 +197,39 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 +cryptography==42.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \ + --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \ + --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \ + --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \ + --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \ + --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \ + --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \ + --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \ + --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \ + --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \ + --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \ + --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \ + --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \ + --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \ + --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \ + --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \ + --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \ + --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \ + --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \ + --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \ + --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \ + --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \ + --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \ + --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \ + --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \ + --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \ + --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \ + --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \ + --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \ + --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \ + --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \ + --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449 deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -310,67 +310,67 @@ greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ - --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -383,44 +383,6 @@ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 -lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56 \ - --hash=sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4 \ - --hash=sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8 \ - --hash=sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282 \ - --hash=sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757 \ - --hash=sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424 \ - --hash=sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b \ - --hash=sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255 \ - --hash=sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70 \ - --hash=sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94 \ - --hash=sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074 \ - --hash=sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c \ - --hash=sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee \ - --hash=sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9 \ - --hash=sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9 \ - --hash=sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69 \ - --hash=sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f \ - --hash=sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3 \ - --hash=sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9 \ - --hash=sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d \ - --hash=sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977 \ - --hash=sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b \ - --hash=sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43 \ - --hash=sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658 \ - --hash=sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a \ - --hash=sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd \ - --hash=sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83 \ - --hash=sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4 \ - --hash=sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696 \ - --hash=sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05 \ - --hash=sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3 \ - --hash=sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6 \ - --hash=sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895 \ - --hash=sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4 \ - --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ - --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ - --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c mako==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e \ --hash=sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c @@ -539,18 +501,18 @@ pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ prometheus-client==0.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -654,9 +616,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -677,9 +639,9 @@ pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b -pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ - --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 +pytest==8.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae \ + --hash=sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 @@ -745,9 +707,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 64cac8b9ad8..589bf34291b 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -4,9 +4,9 @@ alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed @@ -44,9 +44,9 @@ bcrypt==4.1.2 ; python_version >= "3.10" and python_version < "4.0" \ cachetools==5.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:086ee420196f7b2ab9ca2db2520aca326318b68fe5ba8bc4d49cca91add450f2 \ --hash=sha256:861f35a13a451f94e301ce2bec7cac63e881232ccce7ed67fab9b5df4d3beaa1 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -197,39 +197,39 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -cryptography==42.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129 \ - --hash=sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe \ - --hash=sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20 \ - --hash=sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec \ - --hash=sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3 \ - --hash=sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd \ - --hash=sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5 \ - --hash=sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b \ - --hash=sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46 \ - --hash=sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504 \ - --hash=sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306 \ - --hash=sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead \ - --hash=sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e \ - --hash=sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938 \ - --hash=sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a \ - --hash=sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b \ - --hash=sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a \ - --hash=sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd \ - --hash=sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54 \ - --hash=sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c \ - --hash=sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857 \ - --hash=sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f \ - --hash=sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f \ - --hash=sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef \ - --hash=sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c \ - --hash=sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548 \ - --hash=sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65 \ - --hash=sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4 \ - --hash=sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4 \ - --hash=sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a \ - --hash=sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151 \ - --hash=sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396 +cryptography==42.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:01911714117642a3f1792c7f376db572aadadbafcd8d75bb527166009c9f1d1b \ + --hash=sha256:0e89f7b84f421c56e7ff69f11c441ebda73b8a8e6488d322ef71746224c20fce \ + --hash=sha256:12d341bd42cdb7d4937b0cabbdf2a94f949413ac4504904d0cdbdce4a22cbf88 \ + --hash=sha256:15a1fb843c48b4a604663fa30af60818cd28f895572386e5f9b8a665874c26e7 \ + --hash=sha256:1cdcdbd117681c88d717437ada72bdd5be9de117f96e3f4d50dab3f59fd9ab20 \ + --hash=sha256:1df6fcbf60560d2113b5ed90f072dc0b108d64750d4cbd46a21ec882c7aefce9 \ + --hash=sha256:3c6048f217533d89f2f8f4f0fe3044bf0b2090453b7b73d0b77db47b80af8dff \ + --hash=sha256:3e970a2119507d0b104f0a8e281521ad28fc26f2820687b3436b8c9a5fcf20d1 \ + --hash=sha256:44a64043f743485925d3bcac548d05df0f9bb445c5fcca6681889c7c3ab12764 \ + --hash=sha256:4e36685cb634af55e0677d435d425043967ac2f3790ec652b2b88ad03b85c27b \ + --hash=sha256:5f8907fcf57392cd917892ae83708761c6ff3c37a8e835d7246ff0ad251d9298 \ + --hash=sha256:69b22ab6506a3fe483d67d1ed878e1602bdd5912a134e6202c1ec672233241c1 \ + --hash=sha256:6bfadd884e7280df24d26f2186e4e07556a05d37393b0f220a840b083dc6a824 \ + --hash=sha256:6d0fbe73728c44ca3a241eff9aefe6496ab2656d6e7a4ea2459865f2e8613257 \ + --hash=sha256:6ffb03d419edcab93b4b19c22ee80c007fb2d708429cecebf1dd3258956a563a \ + --hash=sha256:810bcf151caefc03e51a3d61e53335cd5c7316c0a105cc695f0959f2c638b129 \ + --hash=sha256:831a4b37accef30cccd34fcb916a5d7b5be3cbbe27268a02832c3e450aea39cb \ + --hash=sha256:887623fe0d70f48ab3f5e4dbf234986b1329a64c066d719432d0698522749929 \ + --hash=sha256:a0298bdc6e98ca21382afe914c642620370ce0470a01e1bef6dd9b5354c36854 \ + --hash=sha256:a1327f280c824ff7885bdeef8578f74690e9079267c1c8bd7dc5cc5aa065ae52 \ + --hash=sha256:c1f25b252d2c87088abc8bbc4f1ecbf7c919e05508a7e8628e6875c40bc70923 \ + --hash=sha256:c3a5cbc620e1e17009f30dd34cb0d85c987afd21c41a74352d1719be33380885 \ + --hash=sha256:ce8613beaffc7c14f091497346ef117c1798c202b01153a8cc7b8e2ebaaf41c0 \ + --hash=sha256:d2a27aca5597c8a71abbe10209184e1a8e91c1fd470b5070a2ea60cafec35bcd \ + --hash=sha256:dad9c385ba8ee025bb0d856714f71d7840020fe176ae0229de618f14dae7a6e2 \ + --hash=sha256:db4b65b02f59035037fde0998974d84244a64c3265bdef32a827ab9b63d61b18 \ + --hash=sha256:e09469a2cec88fb7b078e16d4adec594414397e8879a4341c6ace96013463d5b \ + --hash=sha256:e53dc41cda40b248ebc40b83b31516487f7db95ab8ceac1f042626bc43a2f992 \ + --hash=sha256:f1e85a178384bf19e36779d91ff35c7617c885da487d689b05c1366f9933ad74 \ + --hash=sha256:f47be41843200f7faec0683ad751e5ef11b9a56a220d57f300376cd8aba81660 \ + --hash=sha256:fb0cef872d8193e487fc6bdb08559c3aa41b659a7d9be48b2e10747f47863925 \ + --hash=sha256:ffc73996c4fca3d2b6c1c8c12bfd3ad00def8621da24f547626bf06441400449 deprecated==1.2.14 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c \ --hash=sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3 @@ -310,67 +310,67 @@ greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:eff4eb9b7eb3e4d0cae3d28c283dc16d9bed6b193c2e1ace3ed86ce48ea8df19 \ --hash=sha256:f82d4d717d8ef19188687aa32b8363e96062911e63ba22a0cff7802a8e58e5f1 \ --hash=sha256:fc3a569657468b6f3fb60587e48356fe512c1754ca05a564f11366ac9e306526 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ - --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -492,18 +492,18 @@ pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ prometheus-client==0.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0836af6eb2c8f4fed712b2f279f6c0a8bbab29f9f4aa15276b91c7cb0d1616ab \ --hash=sha256:a03e35b359f14dd1630898543e2120addfdeacd1a6069c1367ae90fd93ad3f48 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -607,9 +607,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -686,9 +686,9 @@ starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/cveapi/poetry.lock b/cveapi/poetry.lock index 5c8c66ee30a..640fee3a281 100644 --- a/cveapi/poetry.lock +++ b/cveapi/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -144,21 +144,22 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "f0f9376f47e0bfbb62bbe9306ce64a4f298acc4ce681d22d56d08b1d950a0553" +content-hash = "a5780ef8e06df616beb6eb67292099db49b8fe658fcbf22940e5e1af96a7c14e" diff --git a/cveapi/pyproject.toml b/cveapi/pyproject.toml index e316081e90f..75304eb175b 100644 --- a/cveapi/pyproject.toml +++ b/cveapi/pyproject.toml @@ -12,7 +12,6 @@ authors = ["MinVWS "] [tool.poetry.dependencies] python = "^3.11" requests = "^2.31.0" -certifi = "^2023.7.22" [tool.poetry.scripts] cveapi = 'cveapi:run' diff --git a/cveapi/requirements.txt b/cveapi/requirements.txt index a4cc2236e3c..a855c2e429c 100644 --- a/cveapi/requirements.txt +++ b/cveapi/requirements.txt @@ -1,6 +1,6 @@ -certifi==2023.11.17 ; python_version >= "3.11" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.11" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.11" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -98,6 +98,6 @@ idna==3.6 ; python_version >= "3.11" and python_version < "4.0" \ requests==2.31.0 ; python_version >= "3.11" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -urllib3==2.1.0 ; python_version >= "3.11" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.1 ; python_version >= "3.11" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 diff --git a/keiko/poetry.lock b/keiko/poetry.lock index 0f0d5afe236..4d863300726 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "anyio" -version = "4.2.0" +version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [package.dependencies] @@ -63,13 +63,13 @@ files = [ [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -265,69 +265,69 @@ grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"] [[package]] name = "grpcio" -version = "1.60.0" +version = "1.62.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139"}, - {file = "grpcio-1.60.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43"}, - {file = "grpcio-1.60.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508"}, - {file = "grpcio-1.60.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b"}, - {file = "grpcio-1.60.0-cp310-cp310-win32.whl", hash = "sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d"}, - {file = "grpcio-1.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df"}, - {file = "grpcio-1.60.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd"}, - {file = "grpcio-1.60.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134"}, - {file = "grpcio-1.60.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444"}, - {file = "grpcio-1.60.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d"}, - {file = "grpcio-1.60.0-cp311-cp311-win32.whl", hash = "sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320"}, - {file = "grpcio-1.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b"}, - {file = "grpcio-1.60.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18"}, - {file = "grpcio-1.60.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b"}, - {file = "grpcio-1.60.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca"}, - {file = "grpcio-1.60.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5"}, - {file = "grpcio-1.60.0-cp312-cp312-win32.whl", hash = "sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951"}, - {file = "grpcio-1.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a"}, - {file = "grpcio-1.60.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415"}, - {file = "grpcio-1.60.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454"}, - {file = "grpcio-1.60.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619"}, - {file = "grpcio-1.60.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179"}, - {file = "grpcio-1.60.0-cp37-cp37m-win_amd64.whl", hash = "sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b"}, - {file = "grpcio-1.60.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e"}, - {file = "grpcio-1.60.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19"}, - {file = "grpcio-1.60.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390"}, - {file = "grpcio-1.60.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629"}, - {file = "grpcio-1.60.0-cp38-cp38-win32.whl", hash = "sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860"}, - {file = "grpcio-1.60.0-cp38-cp38-win_amd64.whl", hash = "sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08"}, - {file = "grpcio-1.60.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968"}, - {file = "grpcio-1.60.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab"}, - {file = "grpcio-1.60.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf"}, - {file = "grpcio-1.60.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6"}, - {file = "grpcio-1.60.0-cp39-cp39-win32.whl", hash = "sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03"}, - {file = "grpcio-1.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353"}, - {file = "grpcio-1.60.0.tar.gz", hash = "sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96"}, + {file = "grpcio-1.62.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271"}, + {file = "grpcio-1.62.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6"}, + {file = "grpcio-1.62.0-cp310-cp310-win32.whl", hash = "sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc"}, + {file = "grpcio-1.62.0-cp310-cp310-win_amd64.whl", hash = "sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa"}, + {file = "grpcio-1.62.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f"}, + {file = "grpcio-1.62.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e"}, + {file = "grpcio-1.62.0-cp311-cp311-win32.whl", hash = "sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd"}, + {file = "grpcio-1.62.0-cp311-cp311-win_amd64.whl", hash = "sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334"}, + {file = "grpcio-1.62.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8"}, + {file = "grpcio-1.62.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388"}, + {file = "grpcio-1.62.0-cp312-cp312-win32.whl", hash = "sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701"}, + {file = "grpcio-1.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842"}, + {file = "grpcio-1.62.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9"}, + {file = "grpcio-1.62.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b"}, + {file = "grpcio-1.62.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b"}, + {file = "grpcio-1.62.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35"}, + {file = "grpcio-1.62.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38"}, + {file = "grpcio-1.62.0-cp38-cp38-win32.whl", hash = "sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe"}, + {file = "grpcio-1.62.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270"}, + {file = "grpcio-1.62.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170"}, + {file = "grpcio-1.62.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a"}, + {file = "grpcio-1.62.0-cp39-cp39-win32.whl", hash = "sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93"}, + {file = "grpcio-1.62.0-cp39-cp39-win_amd64.whl", hash = "sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5"}, + {file = "grpcio-1.62.0.tar.gz", hash = "sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.0)"] +protobuf = ["grpcio-tools (>=1.62.0)"] [[package]] name = "h11" @@ -342,13 +342,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.2" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, - {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -359,7 +359,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.23.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpx" @@ -469,71 +469,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, - {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -787,24 +787,24 @@ files = [ [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -827,38 +827,38 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -866,90 +866,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -957,19 +957,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pygments" version = "2.17.2" @@ -987,13 +991,13 @@ windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pytest" -version = "8.0.0" +version = "8.0.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, + {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, ] [package.dependencies] @@ -1024,13 +1028,13 @@ python-dotenv = ">=0.9.1" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -1077,22 +1081,22 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rich-click" -version = "1.4" +version = "1.7.3" description = "Format click help output nicely with rich" optional = false python-versions = ">=3.7" files = [ - {file = "rich-click-1.4.tar.gz", hash = "sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260"}, - {file = "rich_click-1.4-py3-none-any.whl", hash = "sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b"}, + {file = "rich-click-1.7.3.tar.gz", hash = "sha256:bced1594c497dc007ab49508ff198bb437c576d01291c13a61658999066481f4"}, + {file = "rich_click-1.7.3-py3-none-any.whl", hash = "sha256:bc4163d4e2a3361e21c4d72d300eca6eb8896dfc978667923cb1d4937b8769a3"}, ] [package.dependencies] click = ">=7" rich = ">=10.7.0" +typing-extensions = "*" [package.extras] -dev = ["pre-commit"] -typer = ["typer (>=0.4)"] +dev = ["flake8", "flake8-docstrings", "mypy", "packaging", "pre-commit", "pytest", "pytest-cov", "types-setuptools"] [[package]] name = "robotframework" @@ -1140,13 +1144,13 @@ test = ["coverage", "flake8", "flask", "pytest", "robotframework (>=3.2.1)", "si [[package]] name = "robotframework-tidy" -version = "4.8.1" +version = "4.9.0" description = "Code autoformatter for Robot Framework" optional = false python-versions = ">=3.7" files = [ - {file = "robotframework-tidy-4.8.1.tar.gz", hash = "sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c"}, - {file = "robotframework_tidy-4.8.1-py3-none-any.whl", hash = "sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0"}, + {file = "robotframework-tidy-4.9.0.tar.gz", hash = "sha256:bffb592ba18f573975457fed43dc51b8d33fa298efffb63ef0a8203f7b2790cf"}, + {file = "robotframework_tidy-4.9.0-py3-none-any.whl", hash = "sha256:eebc6663cc7246059bc2fec501f33ca782e9e19b01a8c1b50a50778d31765d6d"}, ] [package.dependencies] @@ -1155,7 +1159,7 @@ colorama = ">=0.4.3,<0.4.7" jinja2 = ">=3.1.3,<4.0" pathspec = ">=0.9.0,<0.12.2" rich-click = ">=1.4,<1.7.4" -robotframework = ">=4.0" +robotframework = ">=4.0,<8.0" tomli = "==2.0.*" [package.extras] @@ -1165,18 +1169,18 @@ generate-config = ["tomli-w (==1.0.*)"] [[package]] name = "setuptools" -version = "69.0.3" +version = "69.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.0.3-py3-none-any.whl", hash = "sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05"}, - {file = "setuptools-69.0.3.tar.gz", hash = "sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78"}, + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, ] [package.extras] docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] @@ -1231,17 +1235,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] @@ -1372,4 +1377,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "7a4ad540c38281f21293534290733d664cc277b53cc1d0e18c52cdaad040e21a" +content-hash = "06708e87ffa161caabb9649ab8ebe8e8dba1cd7e60eb92079fb83f58cc90a772" diff --git a/keiko/pyproject.toml b/keiko/pyproject.toml index 718dca7d3ae..dd7a9251dc1 100644 --- a/keiko/pyproject.toml +++ b/keiko/pyproject.toml @@ -16,7 +16,6 @@ opentelemetry-sdk = "^1.19.0" opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" opentelemetry-instrumentation-fastapi = "^0.41b0" requests = "^2.31.0" -certifi = "^2023.7.22" opentelemetry-instrumentation = "^0.41b0" opentelemetry-instrumentation-requests = "^0.41b0" opentelemetry-instrumentation-psycopg2 = "^0.41b0" diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index b24be422339..d6f1740b65a 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -1,18 +1,18 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -122,67 +122,67 @@ fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7 \ - --hash=sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -201,67 +201,67 @@ jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mdurl==0.1.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \ --hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba @@ -307,131 +307,131 @@ opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pathspec==0.11.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ - --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 -pluggy==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ - --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 +pathspec==0.12.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 \ + --hash=sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712 +pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981 \ + --hash=sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be prompt-toolkit==3.0.43 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d \ --hash=sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 pytest-dotenv==0.5.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2dc6c3ac6d8764c71c6d2804e902d0ff810fa19692e95fe138aefc9b1aa73732 \ --hash=sha256:40a2cece120a213898afaa5407673f6bd924b1fa7eafce6bda0e8abffe2f710f -pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ - --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 -python-dotenv==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +pytest==8.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae \ + --hash=sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rich-click==1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:35b42aa8933894b17de0f2a6c5ca4aeed429e660b39d34fc29567684d58d3c6b \ - --hash=sha256:bcb4662aaf0ac15edf8863e95c72ef3608a1ef346a8cc1a505115ba5eeeb0260 +rich-click==1.7.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:bc4163d4e2a3361e21c4d72d300eca6eb8896dfc978667923cb1d4937b8769a3 \ + --hash=sha256:bced1594c497dc007ab49508ff198bb437c576d01291c13a61658999066481f4 rich==13.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa \ --hash=sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235 @@ -441,15 +441,15 @@ robotframework-debuglibrary==2.5.0 ; python_version >= "3.10" and python_version robotframework-requests==0.9.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:57319f6b4508ab6557332b0328364d3e28c143a99fce195f4247999b25e26284 \ --hash=sha256:818546df98d78f948be204f328a1f8e319480453cfd673603647b9530f8d974f -robotframework-tidy==4.8.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:16b7485a2deda0c39a83e50de4115f213feb75e8a9a6a59086d5928b4db13f8c \ - --hash=sha256:c2c56305c326393bb3b26ee5a9e1241e8bc75045419a0a6a7bb4234311aec2f0 +robotframework-tidy==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:bffb592ba18f573975457fed43dc51b8d33fa298efffb63ef0a8203f7b2790cf \ + --hash=sha256:eebc6663cc7246059bc2fec501f33ca782e9e19b01a8c1b50a50778d31765d6d robotframework==7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:04623f758346c917db182e17591ffa474090560c02ed5a64343902e72b7b4bd5 \ --hash=sha256:865f427c4e4ec8c0b71a24dedbdad6668adfecc9fce04d77d02e1b8e54b77f41 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 @@ -462,9 +462,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/keiko/requirements.txt b/keiko/requirements.txt index 6954cfa9470..9acb6b133ab 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -1,18 +1,18 @@ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -122,61 +122,61 @@ fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -grpcio==1.60.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:073f959c6f570797272f4ee9464a9997eaf1e98c27cb680225b82b53390d61e6 \ - --hash=sha256:0fd3b3968ffe7643144580f260f04d39d869fcc2cddb745deef078b09fd2b328 \ - --hash=sha256:1434ca77d6fed4ea312901122dc8da6c4389738bf5788f43efb19a838ac03ead \ - --hash=sha256:1c30bb23a41df95109db130a6cc1b974844300ae2e5d68dd4947aacba5985aa5 \ - --hash=sha256:20e7a4f7ded59097c84059d28230907cd97130fa74f4a8bfd1d8e5ba18c81491 \ - --hash=sha256:2199165a1affb666aa24adf0c97436686d0a61bc5fc113c037701fb7c7fceb96 \ - --hash=sha256:297eef542156d6b15174a1231c2493ea9ea54af8d016b8ca7d5d9cc65cfcc444 \ - --hash=sha256:2aef56e85901c2397bd557c5ba514f84de1f0ae5dd132f5d5fed042858115951 \ - --hash=sha256:30943b9530fe3620e3b195c03130396cd0ee3a0d10a66c1bee715d1819001eaf \ - --hash=sha256:3b36a2c6d4920ba88fa98075fdd58ff94ebeb8acc1215ae07d01a418af4c0253 \ - --hash=sha256:428d699c8553c27e98f4d29fdc0f0edc50e9a8a7590bfd294d2edb0da7be3629 \ - --hash=sha256:43e636dc2ce9ece583b3e2ca41df5c983f4302eabc6d5f9cd04f0562ee8ec1ae \ - --hash=sha256:452ca5b4afed30e7274445dd9b441a35ece656ec1600b77fff8c216fdf07df43 \ - --hash=sha256:467a7d31554892eed2aa6c2d47ded1079fc40ea0b9601d9f79204afa8902274b \ - --hash=sha256:4b44d7e39964e808b071714666a812049765b26b3ea48c4434a3b317bac82f14 \ - --hash=sha256:4c86343cf9ff7b2514dd229bdd88ebba760bd8973dac192ae687ff75e39ebfab \ - --hash=sha256:5208a57eae445ae84a219dfd8b56e04313445d146873117b5fa75f3245bc1390 \ - --hash=sha256:5ff21e000ff2f658430bde5288cb1ac440ff15c0d7d18b5fb222f941b46cb0d2 \ - --hash=sha256:675997222f2e2f22928fbba640824aebd43791116034f62006e19730715166c0 \ - --hash=sha256:676e4a44e740deaba0f4d95ba1d8c5c89a2fcc43d02c39f69450b1fa19d39590 \ - --hash=sha256:6e306b97966369b889985a562ede9d99180def39ad42c8014628dd3cc343f508 \ - --hash=sha256:6fd9584bf1bccdfff1512719316efa77be235469e1e3295dce64538c4773840b \ - --hash=sha256:705a68a973c4c76db5d369ed573fec3367d7d196673fa86614b33d8c8e9ebb08 \ - --hash=sha256:74d7d9fa97809c5b892449b28a65ec2bfa458a4735ddad46074f9f7d9550ad13 \ - --hash=sha256:77c8a317f0fd5a0a2be8ed5cbe5341537d5c00bb79b3bb27ba7c5378ba77dbca \ - --hash=sha256:79a050889eb8d57a93ed21d9585bb63fca881666fc709f5d9f7f9372f5e7fd03 \ - --hash=sha256:7db16dd4ea1b05ada504f08d0dca1cd9b926bed3770f50e715d087c6f00ad748 \ - --hash=sha256:83f2292ae292ed5a47cdcb9821039ca8e88902923198f2193f13959360c01860 \ - --hash=sha256:87c9224acba0ad8bacddf427a1c2772e17ce50b3042a789547af27099c5f751d \ - --hash=sha256:8a97a681e82bc11a42d4372fe57898d270a2707f36c45c6676e49ce0d5c41353 \ - --hash=sha256:9073513ec380434eb8d21970e1ab3161041de121f4018bbed3146839451a6d8e \ - --hash=sha256:90bdd76b3f04bdb21de5398b8a7c629676c81dfac290f5f19883857e9371d28c \ - --hash=sha256:91229d7203f1ef0ab420c9b53fe2ca5c1fbeb34f69b3bc1b5089466237a4a134 \ - --hash=sha256:92f88ca1b956eb8427a11bb8b4a0c0b2b03377235fc5102cb05e533b8693a415 \ - --hash=sha256:95ae3e8e2c1b9bf671817f86f155c5da7d49a2289c5cf27a319458c3e025c320 \ - --hash=sha256:9e30be89a75ee66aec7f9e60086fadb37ff8c0ba49a022887c28c134341f7179 \ - --hash=sha256:a48edde788b99214613e440fce495bbe2b1e142a7f214cce9e0832146c41e324 \ - --hash=sha256:a7152fa6e597c20cb97923407cf0934e14224af42c2b8d915f48bc3ad2d9ac18 \ - --hash=sha256:a9c7b71211f066908e518a2ef7a5e211670761651039f0d6a80d8d40054047df \ - --hash=sha256:b0571a5aef36ba9177e262dc88a9240c866d903a62799e44fd4aae3f9a2ec17e \ - --hash=sha256:b0fb2d4801546598ac5cd18e3ec79c1a9af8b8f2a86283c55a5337c5aeca4b1b \ - --hash=sha256:b10241250cb77657ab315270b064a6c7f1add58af94befa20687e7c8d8603ae6 \ - --hash=sha256:b87efe4a380887425bb15f220079aa8336276398dc33fce38c64d278164f963d \ - --hash=sha256:b98f43fcdb16172dec5f4b49f2fece4b16a99fd284d81c6bbac1b3b69fcbe0ff \ - --hash=sha256:c193109ca4070cdcaa6eff00fdb5a56233dc7610216d58fb81638f89f02e4968 \ - --hash=sha256:c826f93050c73e7769806f92e601e0efdb83ec8d7c76ddf45d514fee54e8e619 \ - --hash=sha256:d020cfa595d1f8f5c6b343530cd3ca16ae5aefdd1e832b777f9f0eb105f5b139 \ - --hash=sha256:d6a478581b1a1a8fdf3318ecb5f4d0cda41cacdffe2b527c23707c9c1b8fdb55 \ - --hash=sha256:de2ad69c9a094bf37c1102b5744c9aec6cf74d2b635558b779085d0263166454 \ - --hash=sha256:e278eafb406f7e1b1b637c2cf51d3ad45883bb5bd1ca56bc05e4fc135dfdaa65 \ - --hash=sha256:e381fe0c2aa6c03b056ad8f52f8efca7be29fb4d9ae2f8873520843b6039612a \ - --hash=sha256:e61e76020e0c332a98290323ecfec721c9544f5b739fab925b6e8cbe1944cf19 \ - --hash=sha256:f897c3b127532e6befdcf961c415c97f320d45614daf84deba0a54e64ea2457b \ - --hash=sha256:fb464479934778d7cc5baf463d959d361954d6533ad34c3a4f1d267e86ee25fd +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -189,67 +189,67 @@ importlib-metadata==6.11.0 ; python_version >= "3.10" and python_version < "4.0" jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e \ - --hash=sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e \ - --hash=sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431 \ - --hash=sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686 \ - --hash=sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c \ - --hash=sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559 \ - --hash=sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc \ - --hash=sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb \ - --hash=sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939 \ - --hash=sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c \ - --hash=sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0 \ - --hash=sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4 \ - --hash=sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9 \ - --hash=sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575 \ - --hash=sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba \ - --hash=sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d \ - --hash=sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd \ - --hash=sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3 \ - --hash=sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00 \ - --hash=sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155 \ - --hash=sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac \ - --hash=sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52 \ - --hash=sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f \ - --hash=sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8 \ - --hash=sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b \ - --hash=sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007 \ - --hash=sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24 \ - --hash=sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea \ - --hash=sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198 \ - --hash=sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0 \ - --hash=sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee \ - --hash=sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be \ - --hash=sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2 \ - --hash=sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1 \ - --hash=sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707 \ - --hash=sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6 \ - --hash=sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c \ - --hash=sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58 \ - --hash=sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823 \ - --hash=sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779 \ - --hash=sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636 \ - --hash=sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c \ - --hash=sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad \ - --hash=sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee \ - --hash=sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc \ - --hash=sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2 \ - --hash=sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48 \ - --hash=sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7 \ - --hash=sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e \ - --hash=sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b \ - --hash=sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa \ - --hash=sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5 \ - --hash=sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e \ - --hash=sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb \ - --hash=sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9 \ - --hash=sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57 \ - --hash=sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc \ - --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ - --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ - --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 @@ -289,113 +289,113 @@ opentelemetry-semantic-conventions==0.41b0 ; python_version >= "3.10" and python opentelemetry-util-http==0.41b0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:16d5bd04a380dc1079e766562d1e1626cbb47720f197f67010c45f090fffdfb3 \ --hash=sha256:6a167fd1e0e8b0f629530d971165b5d82ed0be2154b7f29498499c3a517edee5 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf -python-dotenv==1.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba \ - --hash=sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 +python-dotenv==1.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca \ + --hash=sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -setuptools==69.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:385eb4edd9c9d5c17540511303e39a147ce2fc04bc55289c322b9e5904fe2c05 \ - --hash=sha256:be1af57fc409f93647f2e8e4573a142ed38724b8cdd389706a867bb4efcf1e78 +setuptools==69.1.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401 \ + --hash=sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6 sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 @@ -405,9 +405,9 @@ starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/mula/poetry.lock b/mula/poetry.lock index ca52e4edede..8ccfc6a51db 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -32,13 +32,13 @@ files = [ [[package]] name = "anyio" -version = "4.2.0" +version = "4.3.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, - {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, + {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"}, + {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"}, ] [package.dependencies] @@ -82,13 +82,13 @@ files = [ [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -217,63 +217,63 @@ files = [ [[package]] name = "coverage" -version = "7.4.1" +version = "7.4.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, - {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, - {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, - {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, - {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, - {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, - {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, - {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, - {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, - {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, - {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, - {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, - {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, - {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, + {file = "coverage-7.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf54c3e089179d9d23900e3efc86d46e4431188d9a657f345410eecdd0151f50"}, + {file = "coverage-7.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fe6e43c8b510719b48af7db9631b5fbac910ade4bd90e6378c85ac5ac706382c"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b98c89db1b150d851a7840142d60d01d07677a18f0f46836e691c38134ed18b"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5f9683be6a5b19cd776ee4e2f2ffb411424819c69afab6b2db3a0a364ec6642"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78cdcbf7b9cb83fe047ee09298e25b1cd1636824067166dc97ad0543b079d22f"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2599972b21911111114100d362aea9e70a88b258400672626efa2b9e2179609c"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ef00d31b7569ed3cb2036f26565f1984b9fc08541731ce01012b02a4c238bf03"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:20a875bfd8c282985c4720c32aa05056f77a68e6d8bbc5fe8632c5860ee0b49b"}, + {file = "coverage-7.4.2-cp310-cp310-win32.whl", hash = "sha256:b3f2b1eb229f23c82898eedfc3296137cf1f16bb145ceab3edfd17cbde273fb7"}, + {file = "coverage-7.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7df95fdd1432a5d2675ce630fef5f239939e2b3610fe2f2b5bf21fa505256fa3"}, + {file = "coverage-7.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8ddbd158e069dded57738ea69b9744525181e99974c899b39f75b2b29a624e2"}, + {file = "coverage-7.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81a5fb41b0d24447a47543b749adc34d45a2cf77b48ca74e5bf3de60a7bd9edc"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2412e98e70f16243be41d20836abd5f3f32edef07cbf8f407f1b6e1ceae783ac"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb79414c15c6f03f56cc68fa06994f047cf20207c31b5dad3f6bab54a0f66ef"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf89ab85027427d351f1de918aff4b43f4eb5f33aff6835ed30322a86ac29c9e"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a178b7b1ac0f1530bb28d2e51f88c0bab3e5949835851a60dda80bff6052510c"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:06fe398145a2e91edaf1ab4eee66149c6776c6b25b136f4a86fcbbb09512fd10"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:18cac867950943fe93d6cd56a67eb7dcd2d4a781a40f4c1e25d6f1ed98721a55"}, + {file = "coverage-7.4.2-cp311-cp311-win32.whl", hash = "sha256:f72cdd2586f9a769570d4b5714a3837b3a59a53b096bb954f1811f6a0afad305"}, + {file = "coverage-7.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:d779a48fac416387dd5673fc5b2d6bd903ed903faaa3247dc1865c65eaa5a93e"}, + {file = "coverage-7.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:adbdfcda2469d188d79771d5696dc54fab98a16d2ef7e0875013b5f56a251047"}, + {file = "coverage-7.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ac4bab32f396b03ebecfcf2971668da9275b3bb5f81b3b6ba96622f4ef3f6e17"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:006d220ba2e1a45f1de083d5022d4955abb0aedd78904cd5a779b955b019ec73"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3733545eb294e5ad274abe131d1e7e7de4ba17a144505c12feca48803fea5f64"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42a9e754aa250fe61f0f99986399cec086d7e7a01dd82fd863a20af34cbce962"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2ed37e16cf35c8d6e0b430254574b8edd242a367a1b1531bd1adc99c6a5e00fe"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b953275d4edfab6cc0ed7139fa773dfb89e81fee1569a932f6020ce7c6da0e8f"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32b4ab7e6c924f945cbae5392832e93e4ceb81483fd6dc4aa8fb1a97b9d3e0e1"}, + {file = "coverage-7.4.2-cp312-cp312-win32.whl", hash = "sha256:f5df76c58977bc35a49515b2fbba84a1d952ff0ec784a4070334dfbec28a2def"}, + {file = "coverage-7.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:34423abbaad70fea9d0164add189eabaea679068ebdf693baa5c02d03e7db244"}, + {file = "coverage-7.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b11f9c6587668e495cc7365f85c93bed34c3a81f9f08b0920b87a89acc13469"}, + {file = "coverage-7.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:51593a1f05c39332f623d64d910445fdec3d2ac2d96b37ce7f331882d5678ddf"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69f1665165ba2fe7614e2f0c1aed71e14d83510bf67e2ee13df467d1c08bf1e8"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3c8bbb95a699c80a167478478efe5e09ad31680931ec280bf2087905e3b95ec"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:175f56572f25e1e1201d2b3e07b71ca4d201bf0b9cb8fad3f1dfae6a4188de86"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8562ca91e8c40864942615b1d0b12289d3e745e6b2da901d133f52f2d510a1e3"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a1ef0f173e1a19738f154fb3644f90d0ada56fe6c9b422f992b04266c55d5a"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f40ac873045db4fd98a6f40387d242bde2708a3f8167bd967ccd43ad46394ba2"}, + {file = "coverage-7.4.2-cp38-cp38-win32.whl", hash = "sha256:d1b750a8409bec61caa7824bfd64a8074b6d2d420433f64c161a8335796c7c6b"}, + {file = "coverage-7.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b4ae777bebaed89e3a7e80c4a03fac434a98a8abb5251b2a957d38fe3fd30088"}, + {file = "coverage-7.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ff7f92ae5a456101ca8f48387fd3c56eb96353588e686286f50633a611afc95"}, + {file = "coverage-7.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:861d75402269ffda0b33af94694b8e0703563116b04c681b1832903fac8fd647"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3507427d83fa961cbd73f11140f4a5ce84208d31756f7238d6257b2d3d868405"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf711d517e21fb5bc429f5c4308fbc430a8585ff2a43e88540264ae87871e36a"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c00e54f0bd258ab25e7f731ca1d5144b0bf7bec0051abccd2bdcff65fa3262c9"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f8e845d894e39fb53834da826078f6dc1a933b32b1478cf437007367efaf6f6a"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:840456cb1067dc350af9080298c7c2cfdddcedc1cb1e0b30dceecdaf7be1a2d3"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c11ca2df2206a4e3e4c4567f52594637392ed05d7c7fb73b4ea1c658ba560265"}, + {file = "coverage-7.4.2-cp39-cp39-win32.whl", hash = "sha256:3ff5bdb08d8938d336ce4088ca1a1e4b6c8cd3bef8bb3a4c0eb2f37406e49643"}, + {file = "coverage-7.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:ac9e95cefcf044c98d4e2c829cd0669918585755dd9a92e28a1a7012322d0a95"}, + {file = "coverage-7.4.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:f593a4a90118d99014517c2679e04a4ef5aee2d81aa05c26c734d271065efcb6"}, + {file = "coverage-7.4.2.tar.gz", hash = "sha256:1a5ee18e3a8d766075ce9314ed1cb695414bae67df6a4b0805f5137d93d6f1cb"}, ] [package.dependencies] @@ -344,13 +344,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "23.2.0" +version = "23.2.1" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-23.2.0-py3-none-any.whl", hash = "sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952"}, - {file = "Faker-23.2.0.tar.gz", hash = "sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9"}, + {file = "Faker-23.2.1-py3-none-any.whl", hash = "sha256:0520a6b97e07c658b2798d7140971c1d5bc4bcd5013e7937fe075fd054aa320c"}, + {file = "Faker-23.2.1.tar.gz", hash = "sha256:f07b64d27f67b62c7f0536a72f47813015b3b51cd4664918454011094321e464"}, ] [package.dependencies] @@ -465,69 +465,69 @@ test = ["objgraph", "psutil"] [[package]] name = "grpcio" -version = "1.60.1" +version = "1.62.0" description = "HTTP/2-based RPC framework" optional = false python-versions = ">=3.7" files = [ - {file = "grpcio-1.60.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092"}, - {file = "grpcio-1.60.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104"}, - {file = "grpcio-1.60.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0"}, - {file = "grpcio-1.60.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb"}, - {file = "grpcio-1.60.1-cp310-cp310-win32.whl", hash = "sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1"}, - {file = "grpcio-1.60.1-cp310-cp310-win_amd64.whl", hash = "sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177"}, - {file = "grpcio-1.60.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303"}, - {file = "grpcio-1.60.1-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03"}, - {file = "grpcio-1.60.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2"}, - {file = "grpcio-1.60.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce"}, - {file = "grpcio-1.60.1-cp311-cp311-win32.whl", hash = "sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd"}, - {file = "grpcio-1.60.1-cp311-cp311-win_amd64.whl", hash = "sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c"}, - {file = "grpcio-1.60.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9"}, - {file = "grpcio-1.60.1-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073"}, - {file = "grpcio-1.60.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe"}, - {file = "grpcio-1.60.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05"}, - {file = "grpcio-1.60.1-cp312-cp312-win32.whl", hash = "sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21"}, - {file = "grpcio-1.60.1-cp312-cp312-win_amd64.whl", hash = "sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f"}, - {file = "grpcio-1.60.1-cp37-cp37m-linux_armv7l.whl", hash = "sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594"}, - {file = "grpcio-1.60.1-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c"}, - {file = "grpcio-1.60.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d"}, - {file = "grpcio-1.60.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e"}, - {file = "grpcio-1.60.1-cp37-cp37m-win_amd64.whl", hash = "sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de"}, - {file = "grpcio-1.60.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549"}, - {file = "grpcio-1.60.1-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f"}, - {file = "grpcio-1.60.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc"}, - {file = "grpcio-1.60.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a"}, - {file = "grpcio-1.60.1-cp38-cp38-win32.whl", hash = "sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929"}, - {file = "grpcio-1.60.1-cp38-cp38-win_amd64.whl", hash = "sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872"}, - {file = "grpcio-1.60.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8"}, - {file = "grpcio-1.60.1-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a"}, - {file = "grpcio-1.60.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff"}, - {file = "grpcio-1.60.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6"}, - {file = "grpcio-1.60.1-cp39-cp39-win32.whl", hash = "sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804"}, - {file = "grpcio-1.60.1-cp39-cp39-win_amd64.whl", hash = "sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904"}, - {file = "grpcio-1.60.1.tar.gz", hash = "sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962"}, + {file = "grpcio-1.62.0-cp310-cp310-linux_armv7l.whl", hash = "sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271"}, + {file = "grpcio-1.62.0-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8"}, + {file = "grpcio-1.62.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0"}, + {file = "grpcio-1.62.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6"}, + {file = "grpcio-1.62.0-cp310-cp310-win32.whl", hash = "sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc"}, + {file = "grpcio-1.62.0-cp310-cp310-win_amd64.whl", hash = "sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa"}, + {file = "grpcio-1.62.0-cp311-cp311-linux_armv7l.whl", hash = "sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f"}, + {file = "grpcio-1.62.0-cp311-cp311-macosx_10_10_universal2.whl", hash = "sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2"}, + {file = "grpcio-1.62.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4"}, + {file = "grpcio-1.62.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e"}, + {file = "grpcio-1.62.0-cp311-cp311-win32.whl", hash = "sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd"}, + {file = "grpcio-1.62.0-cp311-cp311-win_amd64.whl", hash = "sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334"}, + {file = "grpcio-1.62.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8"}, + {file = "grpcio-1.62.0-cp312-cp312-macosx_10_10_universal2.whl", hash = "sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee"}, + {file = "grpcio-1.62.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873"}, + {file = "grpcio-1.62.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388"}, + {file = "grpcio-1.62.0-cp312-cp312-win32.whl", hash = "sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701"}, + {file = "grpcio-1.62.0-cp312-cp312-win_amd64.whl", hash = "sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842"}, + {file = "grpcio-1.62.0-cp37-cp37m-linux_armv7l.whl", hash = "sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9"}, + {file = "grpcio-1.62.0-cp37-cp37m-macosx_10_10_universal2.whl", hash = "sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_aarch64.whl", hash = "sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839"}, + {file = "grpcio-1.62.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b"}, + {file = "grpcio-1.62.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b"}, + {file = "grpcio-1.62.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b"}, + {file = "grpcio-1.62.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35"}, + {file = "grpcio-1.62.0-cp38-cp38-macosx_10_10_universal2.whl", hash = "sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402"}, + {file = "grpcio-1.62.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f"}, + {file = "grpcio-1.62.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38"}, + {file = "grpcio-1.62.0-cp38-cp38-win32.whl", hash = "sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe"}, + {file = "grpcio-1.62.0-cp38-cp38-win_amd64.whl", hash = "sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270"}, + {file = "grpcio-1.62.0-cp39-cp39-linux_armv7l.whl", hash = "sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170"}, + {file = "grpcio-1.62.0-cp39-cp39-macosx_10_10_universal2.whl", hash = "sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b"}, + {file = "grpcio-1.62.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c"}, + {file = "grpcio-1.62.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a"}, + {file = "grpcio-1.62.0-cp39-cp39-win32.whl", hash = "sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93"}, + {file = "grpcio-1.62.0-cp39-cp39-win_amd64.whl", hash = "sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5"}, + {file = "grpcio-1.62.0.tar.gz", hash = "sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7"}, ] [package.extras] -protobuf = ["grpcio-tools (>=1.60.1)"] +protobuf = ["grpcio-tools (>=1.62.0)"] [[package]] name = "h11" @@ -542,13 +542,13 @@ files = [ [[package]] name = "httpcore" -version = "1.0.3" +version = "1.0.4" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, - {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, + {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"}, + {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"}, ] [package.dependencies] @@ -559,7 +559,7 @@ h11 = ">=0.13,<0.15" asyncio = ["anyio (>=4.0,<5.0)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] -trio = ["trio (>=0.22.0,<0.24.0)"] +trio = ["trio (>=0.22.0,<0.25.0)"] [[package]] name = "httpx" @@ -1091,22 +1091,22 @@ twisted = ["twisted"] [[package]] name = "protobuf" -version = "4.25.2" +version = "4.25.3" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.2-cp310-abi3-win32.whl", hash = "sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6"}, - {file = "protobuf-4.25.2-cp310-abi3-win_amd64.whl", hash = "sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9"}, - {file = "protobuf-4.25.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62"}, - {file = "protobuf-4.25.2-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020"}, - {file = "protobuf-4.25.2-cp38-cp38-win32.whl", hash = "sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61"}, - {file = "protobuf-4.25.2-cp38-cp38-win_amd64.whl", hash = "sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62"}, - {file = "protobuf-4.25.2-cp39-cp39-win32.whl", hash = "sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3"}, - {file = "protobuf-4.25.2-cp39-cp39-win_amd64.whl", hash = "sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0"}, - {file = "protobuf-4.25.2-py3-none-any.whl", hash = "sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830"}, - {file = "protobuf-4.25.2.tar.gz", hash = "sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e"}, + {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, + {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, + {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, + {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, + {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, + {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, + {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, + {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, + {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, + {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, ] [[package]] @@ -1271,28 +1271,32 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pytest" -version = "8.0.0" +version = "8.0.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.0-py3-none-any.whl", hash = "sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6"}, - {file = "pytest-8.0.0.tar.gz", hash = "sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c"}, + {file = "pytest-8.0.1-py3-none-any.whl", hash = "sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca"}, + {file = "pytest-8.0.1.tar.gz", hash = "sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae"}, ] [package.dependencies] @@ -1569,13 +1573,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -1700,4 +1704,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "4e5625712d007ba1dc4323ae276a6df4609f98b8f2e46249f2c90302c7a59e3a" +content-hash = "b789fb2f87e8bef62c488a8d453f68bfe453b7e0814acf8c6352802467920591" diff --git a/mula/pyproject.toml b/mula/pyproject.toml index c0ed4b80a31..828df8518ec 100644 --- a/mula/pyproject.toml +++ b/mula/pyproject.toml @@ -28,7 +28,6 @@ opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" opentelemetry-instrumentation-fastapi = "^0.41b0" opentelemetry-instrumentation-psycopg2 = "^0.41b0" opentelemetry-instrumentation-requests = "^0.41b0" -certifi = "^2023.7.22" opentelemetry-instrumentation = "^0.41b0" [tool.poetry.group.dev.dependencies] diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index 6720bc9ffdf..086752c7d54 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -4,18 +4,18 @@ alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -113,59 +113,59 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ - --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ - --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ - --hash=sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7 \ - --hash=sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75 \ - --hash=sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd \ - --hash=sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35 \ - --hash=sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04 \ - --hash=sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6 \ - --hash=sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042 \ - --hash=sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166 \ - --hash=sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1 \ - --hash=sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d \ - --hash=sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c \ - --hash=sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66 \ - --hash=sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70 \ - --hash=sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1 \ - --hash=sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676 \ - --hash=sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630 \ - --hash=sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a \ - --hash=sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74 \ - --hash=sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad \ - --hash=sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19 \ - --hash=sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6 \ - --hash=sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448 \ - --hash=sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018 \ - --hash=sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218 \ - --hash=sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756 \ - --hash=sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54 \ - --hash=sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45 \ - --hash=sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628 \ - --hash=sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968 \ - --hash=sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d \ - --hash=sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25 \ - --hash=sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60 \ - --hash=sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950 \ - --hash=sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06 \ - --hash=sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295 \ - --hash=sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b \ - --hash=sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c \ - --hash=sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc \ - --hash=sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74 \ - --hash=sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1 \ - --hash=sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee \ - --hash=sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011 \ - --hash=sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156 \ - --hash=sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766 \ - --hash=sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5 \ - --hash=sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581 \ - --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ - --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ - --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 +coverage[toml]==7.4.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:006d220ba2e1a45f1de083d5022d4955abb0aedd78904cd5a779b955b019ec73 \ + --hash=sha256:06fe398145a2e91edaf1ab4eee66149c6776c6b25b136f4a86fcbbb09512fd10 \ + --hash=sha256:175f56572f25e1e1201d2b3e07b71ca4d201bf0b9cb8fad3f1dfae6a4188de86 \ + --hash=sha256:18cac867950943fe93d6cd56a67eb7dcd2d4a781a40f4c1e25d6f1ed98721a55 \ + --hash=sha256:1a5ee18e3a8d766075ce9314ed1cb695414bae67df6a4b0805f5137d93d6f1cb \ + --hash=sha256:20a875bfd8c282985c4720c32aa05056f77a68e6d8bbc5fe8632c5860ee0b49b \ + --hash=sha256:2412e98e70f16243be41d20836abd5f3f32edef07cbf8f407f1b6e1ceae783ac \ + --hash=sha256:2599972b21911111114100d362aea9e70a88b258400672626efa2b9e2179609c \ + --hash=sha256:2ed37e16cf35c8d6e0b430254574b8edd242a367a1b1531bd1adc99c6a5e00fe \ + --hash=sha256:32b4ab7e6c924f945cbae5392832e93e4ceb81483fd6dc4aa8fb1a97b9d3e0e1 \ + --hash=sha256:34423abbaad70fea9d0164add189eabaea679068ebdf693baa5c02d03e7db244 \ + --hash=sha256:3507427d83fa961cbd73f11140f4a5ce84208d31756f7238d6257b2d3d868405 \ + --hash=sha256:3733545eb294e5ad274abe131d1e7e7de4ba17a144505c12feca48803fea5f64 \ + --hash=sha256:3ff5bdb08d8938d336ce4088ca1a1e4b6c8cd3bef8bb3a4c0eb2f37406e49643 \ + --hash=sha256:3ff7f92ae5a456101ca8f48387fd3c56eb96353588e686286f50633a611afc95 \ + --hash=sha256:42a9e754aa250fe61f0f99986399cec086d7e7a01dd82fd863a20af34cbce962 \ + --hash=sha256:51593a1f05c39332f623d64d910445fdec3d2ac2d96b37ce7f331882d5678ddf \ + --hash=sha256:5b11f9c6587668e495cc7365f85c93bed34c3a81f9f08b0920b87a89acc13469 \ + --hash=sha256:69f1665165ba2fe7614e2f0c1aed71e14d83510bf67e2ee13df467d1c08bf1e8 \ + --hash=sha256:78cdcbf7b9cb83fe047ee09298e25b1cd1636824067166dc97ad0543b079d22f \ + --hash=sha256:7df95fdd1432a5d2675ce630fef5f239939e2b3610fe2f2b5bf21fa505256fa3 \ + --hash=sha256:81a5fb41b0d24447a47543b749adc34d45a2cf77b48ca74e5bf3de60a7bd9edc \ + --hash=sha256:840456cb1067dc350af9080298c7c2cfdddcedc1cb1e0b30dceecdaf7be1a2d3 \ + --hash=sha256:8562ca91e8c40864942615b1d0b12289d3e745e6b2da901d133f52f2d510a1e3 \ + --hash=sha256:861d75402269ffda0b33af94694b8e0703563116b04c681b1832903fac8fd647 \ + --hash=sha256:8b98c89db1b150d851a7840142d60d01d07677a18f0f46836e691c38134ed18b \ + --hash=sha256:a178b7b1ac0f1530bb28d2e51f88c0bab3e5949835851a60dda80bff6052510c \ + --hash=sha256:a8ddbd158e069dded57738ea69b9744525181e99974c899b39f75b2b29a624e2 \ + --hash=sha256:ac4bab32f396b03ebecfcf2971668da9275b3bb5f81b3b6ba96622f4ef3f6e17 \ + --hash=sha256:ac9e95cefcf044c98d4e2c829cd0669918585755dd9a92e28a1a7012322d0a95 \ + --hash=sha256:adbdfcda2469d188d79771d5696dc54fab98a16d2ef7e0875013b5f56a251047 \ + --hash=sha256:b3c8bbb95a699c80a167478478efe5e09ad31680931ec280bf2087905e3b95ec \ + --hash=sha256:b3f2b1eb229f23c82898eedfc3296137cf1f16bb145ceab3edfd17cbde273fb7 \ + --hash=sha256:b4ae777bebaed89e3a7e80c4a03fac434a98a8abb5251b2a957d38fe3fd30088 \ + --hash=sha256:b953275d4edfab6cc0ed7139fa773dfb89e81fee1569a932f6020ce7c6da0e8f \ + --hash=sha256:bf54c3e089179d9d23900e3efc86d46e4431188d9a657f345410eecdd0151f50 \ + --hash=sha256:bf711d517e21fb5bc429f5c4308fbc430a8585ff2a43e88540264ae87871e36a \ + --hash=sha256:c00e54f0bd258ab25e7f731ca1d5144b0bf7bec0051abccd2bdcff65fa3262c9 \ + --hash=sha256:c11ca2df2206a4e3e4c4567f52594637392ed05d7c7fb73b4ea1c658ba560265 \ + --hash=sha256:c5f9683be6a5b19cd776ee4e2f2ffb411424819c69afab6b2db3a0a364ec6642 \ + --hash=sha256:cf89ab85027427d351f1de918aff4b43f4eb5f33aff6835ed30322a86ac29c9e \ + --hash=sha256:d1b750a8409bec61caa7824bfd64a8074b6d2d420433f64c161a8335796c7c6b \ + --hash=sha256:d779a48fac416387dd5673fc5b2d6bd903ed903faaa3247dc1865c65eaa5a93e \ + --hash=sha256:d9a1ef0f173e1a19738f154fb3644f90d0ada56fe6c9b422f992b04266c55d5a \ + --hash=sha256:ddb79414c15c6f03f56cc68fa06994f047cf20207c31b5dad3f6bab54a0f66ef \ + --hash=sha256:ef00d31b7569ed3cb2036f26565f1984b9fc08541731ce01012b02a4c238bf03 \ + --hash=sha256:f40ac873045db4fd98a6f40387d242bde2708a3f8167bd967ccd43ad46394ba2 \ + --hash=sha256:f593a4a90118d99014517c2679e04a4ef5aee2d81aa05c26c734d271065efcb6 \ + --hash=sha256:f5df76c58977bc35a49515b2fbba84a1d952ff0ec784a4070334dfbec28a2def \ + --hash=sha256:f72cdd2586f9a769570d4b5714a3837b3a59a53b096bb954f1811f6a0afad305 \ + --hash=sha256:f8e845d894e39fb53834da826078f6dc1a933b32b1478cf437007367efaf6f6a \ + --hash=sha256:fe6e43c8b510719b48af7db9631b5fbac910ade4bd90e6378c85ac5ac706382c decorator==5.1.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 @@ -178,9 +178,9 @@ exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952 \ - --hash=sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9 +faker==23.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0520a6b97e07c658b2798d7140971c1d5bc4bcd5013e7937fe075fd054aa320c \ + --hash=sha256:f07b64d27f67b62c7f0536a72f47813015b3b51cd4664918454011094321e464 fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d \ --hash=sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73 @@ -246,67 +246,67 @@ greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platf --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544 \ - --hash=sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2 +httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ + --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd @@ -515,18 +515,18 @@ pluggy==1.4.0 ; python_version >= "3.10" and python_version < "4.0" \ prometheus-client==0.19.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1 \ --hash=sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psutil==5.9.8 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d \ --hash=sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73 \ @@ -638,18 +638,18 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pytest-cov==4.1.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6 \ --hash=sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a -pytest==8.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:249b1b0864530ba251b7438274c4d251c58d868edaaec8762893ad4a0d71c36c \ - --hash=sha256:50fb9cbe836c3f20f0dfa99c565201fb75dc54c8d76373cd1bde06b06657bdb6 +pytest==8.0.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:267f6563751877d772019b13aacbe4e860d73fe8f651f28112e9ac37de7513ae \ + --hash=sha256:3e4f16fe1c0a9dc9d9389161c127c3edc5d810c38d6793042fb81d9f48a59fca python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86 \ --hash=sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9 @@ -732,9 +732,9 @@ tomli==2.0.1 ; python_version >= "3.10" and python_full_version <= "3.11.0a6" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/mula/requirements.txt b/mula/requirements.txt index 0be958e09c3..177cf570896 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -4,18 +4,18 @@ alembic==1.13.1 ; python_version >= "3.10" and python_version < "4.0" \ annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d -anyio==4.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee \ - --hash=sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f +anyio==4.3.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8 \ + --hash=sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6 asgiref==3.7.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e \ --hash=sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed backoff==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba \ --hash=sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -187,61 +187,61 @@ greenlet==3.0.3 ; python_version >= "3.10" and python_version < "4.0" and (platf --hash=sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf \ --hash=sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da \ --hash=sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33 -grpcio==1.60.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0250a7a70b14000fa311de04b169cc7480be6c1a769b190769d347939d3232a8 \ - --hash=sha256:069fe2aeee02dfd2135d562d0663fe70fbb69d5eed6eb3389042a7e963b54de8 \ - --hash=sha256:082081e6a36b6eb5cf0fd9a897fe777dbb3802176ffd08e3ec6567edd85bc104 \ - --hash=sha256:0c5807e9152eff15f1d48f6b9ad3749196f79a4a050469d99eecb679be592acc \ - --hash=sha256:14e8f2c84c0832773fb3958240c69def72357bc11392571f87b2d7b91e0bb092 \ - --hash=sha256:2a6087f234cb570008a6041c8ffd1b7d657b397fdd6d26e83d72283dae3527b1 \ - --hash=sha256:2bb2a2911b028f01c8c64d126f6b632fcd8a9ac975aa1b3855766c94e4107180 \ - --hash=sha256:2f44c32aef186bbba254129cea1df08a20be414144ac3bdf0e84b24e3f3b2e05 \ - --hash=sha256:30e980cd6db1088c144b92fe376747328d5554bc7960ce583ec7b7d81cd47287 \ - --hash=sha256:33aed0a431f5befeffd9d346b0fa44b2c01aa4aeae5ea5b2c03d3e25e0071216 \ - --hash=sha256:33bdea30dcfd4f87b045d404388469eb48a48c33a6195a043d116ed1b9a0196c \ - --hash=sha256:39aa848794b887120b1d35b1b994e445cc028ff602ef267f87c38122c1add50d \ - --hash=sha256:4216e67ad9a4769117433814956031cb300f85edc855252a645a9a724b3b6594 \ - --hash=sha256:49c9b6a510e3ed8df5f6f4f3c34d7fbf2d2cae048ee90a45cd7415abab72912c \ - --hash=sha256:4eec8b8c1c2c9b7125508ff7c89d5701bf933c99d3910e446ed531cd16ad5d87 \ - --hash=sha256:50d56280b482875d1f9128ce596e59031a226a8b84bec88cb2bf76c289f5d0de \ - --hash=sha256:53b69e79d00f78c81eecfb38f4516080dc7f36a198b6b37b928f1c13b3c063e9 \ - --hash=sha256:55ccb7db5a665079d68b5c7c86359ebd5ebf31a19bc1a91c982fd622f1e31ff2 \ - --hash=sha256:5a1ebbae7e2214f51b1f23b57bf98eeed2cf1ba84e4d523c48c36d5b2f8829ff \ - --hash=sha256:61b7199cd2a55e62e45bfb629a35b71fc2c0cb88f686a047f25b1112d3810904 \ - --hash=sha256:660fc6b9c2a9ea3bb2a7e64ba878c98339abaf1811edca904ac85e9e662f1d73 \ - --hash=sha256:6d140bdeb26cad8b93c1455fa00573c05592793c32053d6e0016ce05ba267549 \ - --hash=sha256:6e490fa5f7f5326222cb9f0b78f207a2b218a14edf39602e083d5f617354306f \ - --hash=sha256:6ecf21d20d02d1733e9c820fb5c114c749d888704a7ec824b545c12e78734d1c \ - --hash=sha256:70c83bb530572917be20c21f3b6be92cd86b9aecb44b0c18b1d3b2cc3ae47df0 \ - --hash=sha256:72153a0d2e425f45b884540a61c6639436ddafa1829a42056aa5764b84108b8e \ - --hash=sha256:73e14acd3d4247169955fae8fb103a2b900cfad21d0c35f0dcd0fdd54cd60367 \ - --hash=sha256:76eaaba891083fcbe167aa0f03363311a9f12da975b025d30e94b93ac7a765fc \ - --hash=sha256:79ae0dc785504cb1e1788758c588c711f4e4a0195d70dff53db203c95a0bd303 \ - --hash=sha256:7d142bcd604166417929b071cd396aa13c565749a4c840d6c702727a59d835eb \ - --hash=sha256:8c9554ca8e26241dabe7951aa1fa03a1ba0856688ecd7e7bdbdd286ebc272e4c \ - --hash=sha256:8d488fbdbf04283f0d20742b64968d44825617aa6717b07c006168ed16488804 \ - --hash=sha256:91422ba785a8e7a18725b1dc40fbd88f08a5bb4c7f1b3e8739cab24b04fa8a03 \ - --hash=sha256:9a66f4d2a005bc78e61d805ed95dedfcb35efa84b7bba0403c6d60d13a3de2d6 \ - --hash=sha256:9b106bc52e7f28170e624ba61cc7dc6829566e535a6ec68528f8e1afbed1c41f \ - --hash=sha256:9b54577032d4f235452f77a83169b6527bf4b77d73aeada97d45b2aaf1bf5ce0 \ - --hash=sha256:a09506eb48fa5493c58f946c46754ef22f3ec0df64f2b5149373ff31fb67f3dd \ - --hash=sha256:a212e5dea1a4182e40cd3e4067ee46be9d10418092ce3627475e995cca95de21 \ - --hash=sha256:a731ac5cffc34dac62053e0da90f0c0b8560396a19f69d9703e88240c8f05858 \ - --hash=sha256:af5ef6cfaf0d023c00002ba25d0751e5995fa0e4c9eec6cd263c30352662cbce \ - --hash=sha256:b58b855d0071575ea9c7bc0d84a06d2edfbfccec52e9657864386381a7ce1ae9 \ - --hash=sha256:bc808924470643b82b14fe121923c30ec211d8c693e747eba8a7414bc4351a23 \ - --hash=sha256:c557e94e91a983e5b1e9c60076a8fd79fea1e7e06848eb2e48d0ccfb30f6e073 \ - --hash=sha256:c71be3f86d67d8d1311c6076a4ba3b75ba5703c0b856b4e691c9097f9b1e8bd2 \ - --hash=sha256:c8754c75f55781515a3005063d9a05878b2cfb3cb7e41d5401ad0cf19de14872 \ - --hash=sha256:cb0af13433dbbd1c806e671d81ec75bd324af6ef75171fd7815ca3074fe32bfe \ - --hash=sha256:cba6209c96828711cb7c8fcb45ecef8c8859238baf15119daa1bef0f6c84bfe7 \ - --hash=sha256:cf77f8cf2a651fbd869fbdcb4a1931464189cd210abc4cfad357f1cacc8642a6 \ - --hash=sha256:d7404cebcdb11bb5bd40bf94131faf7e9a7c10a6c60358580fe83913f360f929 \ - --hash=sha256:dd1d3a8d1d2e50ad9b59e10aa7f07c7d1be2b367f3f2d33c5fade96ed5460962 \ - --hash=sha256:e5d97c65ea7e097056f3d1ead77040ebc236feaf7f71489383d20f3b4c28412a \ - --hash=sha256:f1c3dc536b3ee124e8b24feb7533e5c70b9f2ef833e3b2e5513b2897fd46763a \ - --hash=sha256:f2212796593ad1d0235068c79836861f2201fc7137a99aa2fea7beeb3b101177 \ - --hash=sha256:fead980fbc68512dfd4e0c7b1f5754c2a8e5015a04dea454b9cada54a8423525 +grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b9179478b09ee22f4a36b40ca87ad43376acdccc816ce7c2193a9061bf35701 \ + --hash=sha256:0d3dee701e48ee76b7d6fbbba18ba8bc142e5b231ef7d3d97065204702224e0e \ + --hash=sha256:0d7ae7fc7dbbf2d78d6323641ded767d9ec6d121aaf931ec4a5c50797b886532 \ + --hash=sha256:0e97f37a3b7c89f9125b92d22e9c8323f4e76e7993ba7049b9f4ccbe8bae958a \ + --hash=sha256:136ffd79791b1eddda8d827b607a6285474ff8a1a5735c4947b58c481e5e4271 \ + --hash=sha256:1bc8449084fe395575ed24809752e1dc4592bb70900a03ca42bf236ed5bf008f \ + --hash=sha256:1eda79574aec8ec4d00768dcb07daba60ed08ef32583b62b90bbf274b3c279f7 \ + --hash=sha256:29cb592c4ce64a023712875368bcae13938c7f03e99f080407e20ffe0a9aa33b \ + --hash=sha256:2c1488b31a521fbba50ae86423f5306668d6f3a46d124f7819c603979fc538c4 \ + --hash=sha256:2e84bfb2a734e4a234b116be208d6f0214e68dcf7804306f97962f93c22a1839 \ + --hash=sha256:2f3d9a4d0abb57e5f49ed5039d3ed375826c2635751ab89dcc25932ff683bbb6 \ + --hash=sha256:36df33080cd7897623feff57831eb83c98b84640b016ce443305977fac7566fb \ + --hash=sha256:38f69de9c28c1e7a8fd24e4af4264726637b72f27c2099eaea6e513e7142b47e \ + --hash=sha256:39cd45bd82a2e510e591ca2ddbe22352e8413378852ae814549c162cf3992a93 \ + --hash=sha256:3fa15850a6aba230eed06b236287c50d65a98f05054a0f01ccedf8e1cc89d57f \ + --hash=sha256:4cd356211579043fce9f52acc861e519316fff93980a212c8109cca8f47366b6 \ + --hash=sha256:56ca7ba0b51ed0de1646f1735154143dcbdf9ec2dbe8cc6645def299bb527ca1 \ + --hash=sha256:5e709f7c8028ce0443bddc290fb9c967c1e0e9159ef7a030e8c21cac1feabd35 \ + --hash=sha256:614c3ed234208e76991992342bab725f379cc81c7dd5035ee1de2f7e3f7a9842 \ + --hash=sha256:62aa1659d8b6aad7329ede5d5b077e3d71bf488d85795db517118c390358d5f6 \ + --hash=sha256:62ccb92f594d3d9fcd00064b149a0187c246b11e46ff1b7935191f169227f04c \ + --hash=sha256:662d3df5314ecde3184cf87ddd2c3a66095b3acbb2d57a8cada571747af03873 \ + --hash=sha256:748496af9238ac78dcd98cce65421f1adce28c3979393e3609683fcd7f3880d7 \ + --hash=sha256:77d48e5b1f8f4204889f1acf30bb57c30378e17c8d20df5acbe8029e985f735c \ + --hash=sha256:7a195531828b46ea9c4623c47e1dc45650fc7206f8a71825898dd4c9004b0928 \ + --hash=sha256:7e1f51e2a460b7394670fdb615e26d31d3260015154ea4f1501a45047abe06c9 \ + --hash=sha256:7eea57444a354ee217fda23f4b479a4cdfea35fb918ca0d8a0e73c271e52c09c \ + --hash=sha256:7f9d6c3223914abb51ac564dc9c3782d23ca445d2864321b9059d62d47144021 \ + --hash=sha256:81531632f93fece32b2762247c4c169021177e58e725494f9a746ca62c83acaa \ + --hash=sha256:81d444e5e182be4c7856cd33a610154fe9ea1726bd071d07e7ba13fafd202e38 \ + --hash=sha256:821a44bd63d0f04e33cf4ddf33c14cae176346486b0df08b41a6132b976de5fc \ + --hash=sha256:88f41f33da3840b4a9bbec68079096d4caf629e2c6ed3a72112159d570d98ebe \ + --hash=sha256:8aab8f90b2a41208c0a071ec39a6e5dbba16fd827455aaa070fec241624ccef8 \ + --hash=sha256:921148f57c2e4b076af59a815467d399b7447f6e0ee10ef6d2601eb1e9c7f402 \ + --hash=sha256:92cdb616be44c8ac23a57cce0243af0137a10aa82234f23cd46e69e115071388 \ + --hash=sha256:95370c71b8c9062f9ea033a0867c4c73d6f0ff35113ebd2618171ec1f1e903e0 \ + --hash=sha256:98d8f4eb91f1ce0735bf0b67c3b2a4fea68b52b2fd13dc4318583181f9219b4b \ + --hash=sha256:a33f2bfd8a58a02aab93f94f6c61279be0f48f99fcca20ebaee67576cd57307b \ + --hash=sha256:ab140a3542bbcea37162bdfc12ce0d47a3cda3f2d91b752a124cc9fe6776a9e2 \ + --hash=sha256:b3d3d755cfa331d6090e13aac276d4a3fb828bf935449dc16c3d554bf366136b \ + --hash=sha256:b71c65427bf0ec6a8b48c68c17356cb9fbfc96b1130d20a07cb462f4e4dcdcd5 \ + --hash=sha256:b7a6be562dd18e5d5bec146ae9537f20ae1253beb971c0164f1e8a2f5a27e829 \ + --hash=sha256:bcff647e7fe25495e7719f779cc219bbb90b9e79fbd1ce5bda6aae2567f469f2 \ + --hash=sha256:c912688acc05e4ff012c8891803659d6a8a8b5106f0f66e0aed3fb7e77898fa6 \ + --hash=sha256:ce1aafdf8d3f58cb67664f42a617af0e34555fe955450d42c19e4a6ad41c84bd \ + --hash=sha256:d6a56ba703be6b6267bf19423d888600c3f574ac7c2cc5e6220af90662a4d6b0 \ + --hash=sha256:e803e9b58d8f9b4ff0ea991611a8d51b31c68d2e24572cd1fe85e99e8cc1b4f8 \ + --hash=sha256:eef1d16ac26c5325e7d39f5452ea98d6988c700c427c52cbc7ce3201e6d93334 \ + --hash=sha256:f359d635ee9428f0294bea062bb60c478a8ddc44b0b6f8e1f42997e5dc12e2ee \ + --hash=sha256:f4c04fe33039b35b97c02d2901a164bbbb2f21fb9c4e2a45a959f0b044c3512c \ + --hash=sha256:f897b16190b46bc4d4aaf0a32a4b819d559a37a756d7c6b571e9562c360eed72 \ + --hash=sha256:fbe0c20ce9a1cff75cfb828b21f08d0a1ca527b67f2443174af6626798a754a4 \ + --hash=sha256:fc2836cb829895ee190813446dce63df67e6ed7b9bf76060262c55fcd097d270 \ + --hash=sha256:fcc98cff4084467839d0a20d16abc2a76005f3d1b38062464d088c07f500d170 h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 @@ -441,18 +441,18 @@ pika==1.3.2 ; python_version >= "3.10" and python_version < "4.0" \ prometheus-client==0.19.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4585b0d1223148c27a225b10dbec5ae9bc4c81a99a3fa80774fa6209935324e1 \ --hash=sha256:c88b1e6ecf6b41cd8fb5731c7ae919bf66df6ec6fafa555cd6c0e16ca169ae92 -protobuf==4.25.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:10894a2885b7175d3984f2be8d9850712c57d5e7587a2410720af8be56cdaf62 \ - --hash=sha256:2db9f8fa64fbdcdc93767d3cf81e0f2aef176284071507e3ede160811502fd3d \ - --hash=sha256:33a1aeef4b1927431d1be780e87b641e322b88d654203a9e9d93f218ee359e61 \ - --hash=sha256:47f3de503fe7c1245f6f03bea7e8d3ec11c6c4a2ea9ef910e3221c8a15516d62 \ - --hash=sha256:5e5c933b4c30a988b52e0b7c02641760a5ba046edc5e43d3b94a74c9fc57c1b3 \ - --hash=sha256:8f62574857ee1de9f770baf04dde4165e30b15ad97ba03ceac65f760ff018ac9 \ - --hash=sha256:a8b7a98d4ce823303145bf3c1a8bdb0f2f4642a414b196f04ad9853ed0c8f830 \ - --hash=sha256:b50c949608682b12efb0b2717f53256f03636af5f60ac0c1d900df6213910fd6 \ - --hash=sha256:d66a769b8d687df9024f2985d5137a337f957a0916cf5464d1513eee96a63ff0 \ - --hash=sha256:fc381d1dd0516343f1440019cedf08a7405f791cd49eef4ae1ea06520bc1c020 \ - --hash=sha256:fe599e175cb347efc8ee524bcd4b902d11f7262c0e569ececcb89995c15f0a5e +protobuf==4.25.3 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4 \ + --hash=sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8 \ + --hash=sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c \ + --hash=sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d \ + --hash=sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4 \ + --hash=sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa \ + --hash=sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c \ + --hash=sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019 \ + --hash=sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9 \ + --hash=sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c \ + --hash=sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2 psycopg2==2.9.9 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981 \ --hash=sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516 \ @@ -547,9 +547,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -626,9 +626,9 @@ structlog==23.3.0 ; python_version >= "3.10" and python_version < "4.0" \ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvicorn==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48bfd350fce3c5c57af5fb4995fded8fb50da3b4feb543eb18ad7e0d54589602 \ --hash=sha256:cdb58ef6b8188c6c174994b2b1ba2150a9a8ae7ea5fb2f1b856b94a815d6071d diff --git a/poetry.lock b/poetry.lock index d6e9c1a6c0e..87b5c28b981 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "alabaster" -version = "0.7.13" -description = "A configurable sidebar-enabled Sphinx theme" +version = "0.7.16" +description = "A light, configurable Sphinx theme" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, - {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, + {file = "alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92"}, + {file = "alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65"}, ] [[package]] @@ -38,13 +38,13 @@ dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -247,71 +247,71 @@ testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" -version = "2.1.4" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win32.whl", hash = "sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0"}, - {file = "MarkupSafe-2.1.4-cp310-cp310-win_amd64.whl", hash = "sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win32.whl", hash = "sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74"}, - {file = "MarkupSafe-2.1.4-cp311-cp311-win_amd64.whl", hash = "sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win32.whl", hash = "sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475"}, - {file = "MarkupSafe-2.1.4-cp312-cp312-win_amd64.whl", hash = "sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win32.whl", hash = "sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0"}, - {file = "MarkupSafe-2.1.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win32.whl", hash = "sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a"}, - {file = "MarkupSafe-2.1.4-cp38-cp38-win_amd64.whl", hash = "sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win32.whl", hash = "sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6"}, - {file = "MarkupSafe-2.1.4-cp39-cp39-win_amd64.whl", hash = "sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959"}, - {file = "MarkupSafe-2.1.4.tar.gz", hash = "sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -383,18 +383,18 @@ files = [ [[package]] name = "pydantic" -version = "2.6.0" +version = "2.6.1" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.6.0-py3-none-any.whl", hash = "sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae"}, - {file = "pydantic-2.6.0.tar.gz", hash = "sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.16.1" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -402,90 +402,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.16.1" +version = "2.16.2" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948"}, - {file = "pydantic_core-2.16.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798"}, - {file = "pydantic_core-2.16.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388"}, - {file = "pydantic_core-2.16.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7"}, - {file = "pydantic_core-2.16.1-cp310-none-win32.whl", hash = "sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4"}, - {file = "pydantic_core-2.16.1-cp310-none-win_amd64.whl", hash = "sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da"}, - {file = "pydantic_core-2.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d"}, - {file = "pydantic_core-2.16.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7"}, - {file = "pydantic_core-2.16.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae"}, - {file = "pydantic_core-2.16.1-cp311-none-win32.whl", hash = "sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1"}, - {file = "pydantic_core-2.16.1-cp311-none-win_amd64.whl", hash = "sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c"}, - {file = "pydantic_core-2.16.1-cp311-none-win_arm64.whl", hash = "sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51"}, - {file = "pydantic_core-2.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54"}, - {file = "pydantic_core-2.16.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8"}, - {file = "pydantic_core-2.16.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f"}, - {file = "pydantic_core-2.16.1-cp312-none-win32.whl", hash = "sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212"}, - {file = "pydantic_core-2.16.1-cp312-none-win_amd64.whl", hash = "sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f"}, - {file = "pydantic_core-2.16.1-cp312-none-win_arm64.whl", hash = "sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706"}, - {file = "pydantic_core-2.16.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c"}, - {file = "pydantic_core-2.16.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8"}, - {file = "pydantic_core-2.16.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca"}, - {file = "pydantic_core-2.16.1-cp38-none-win32.whl", hash = "sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610"}, - {file = "pydantic_core-2.16.1-cp38-none-win_amd64.whl", hash = "sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196"}, - {file = "pydantic_core-2.16.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc"}, - {file = "pydantic_core-2.16.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d"}, - {file = "pydantic_core-2.16.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640"}, - {file = "pydantic_core-2.16.1-cp39-none-win32.whl", hash = "sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f"}, - {file = "pydantic_core-2.16.1-cp39-none-win_amd64.whl", hash = "sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc"}, - {file = "pydantic_core-2.16.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206"}, - {file = "pydantic_core-2.16.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76"}, - {file = "pydantic_core-2.16.1.tar.gz", hash = "sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -493,19 +493,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pygments" version = "2.17.2" @@ -560,7 +564,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -675,13 +678,13 @@ files = [ [[package]] name = "sphinx" -version = "7.1.2" +version = "7.2.6" description = "Python documentation generator" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinx-7.1.2-py3-none-any.whl", hash = "sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe"}, - {file = "sphinx-7.1.2.tar.gz", hash = "sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f"}, + {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, + {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, ] [package.dependencies] @@ -692,7 +695,7 @@ docutils = ">=0.18.1,<0.21" imagesize = ">=1.3" Jinja2 = ">=3.0" packaging = ">=21.0" -Pygments = ">=2.13" +Pygments = ">=2.14" requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" @@ -700,12 +703,12 @@ sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] +test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] [[package]] name = "sphinx-rtd-theme" @@ -728,47 +731,50 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.4" +version = "1.0.8" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, + {file = "sphinxcontrib_applehelp-1.0.8-py3-none-any.whl", hash = "sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4"}, + {file = "sphinxcontrib_applehelp-1.0.8.tar.gz", hash = "sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +version = "1.0.6" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, + {file = "sphinxcontrib_devhelp-1.0.6-py3-none-any.whl", hash = "sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f"}, + {file = "sphinxcontrib_devhelp-1.0.6.tar.gz", hash = "sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.1" +version = "2.0.5" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, + {file = "sphinxcontrib_htmlhelp-2.0.5-py3-none-any.whl", hash = "sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04"}, + {file = "sphinxcontrib_htmlhelp-2.0.5.tar.gz", hash = "sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["html5lib", "pytest"] [[package]] @@ -812,32 +818,34 @@ files = [ [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +version = "1.0.7" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, + {file = "sphinxcontrib_qthelp-1.0.7-py3-none-any.whl", hash = "sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182"}, + {file = "sphinxcontrib_qthelp-1.0.7.tar.gz", hash = "sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "1.1.10" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-1.1.10-py3-none-any.whl", hash = "sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7"}, + {file = "sphinxcontrib_serializinghtml-1.1.10.tar.gz", hash = "sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f"}, ] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] +standalone = ["Sphinx (>=5)"] test = ["pytest"] [[package]] @@ -877,17 +885,18 @@ files = [ [[package]] name = "urllib3" -version = "2.1.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.1.0-py3-none-any.whl", hash = "sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3"}, - {file = "urllib3-2.1.0.tar.gz", hash = "sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] diff --git a/requirements.txt b/requirements.txt index 7fa1405df51..4e40d481f2c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,15 +1,15 @@ -alabaster==0.7.13 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3 \ - --hash=sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2 +alabaster==0.7.16 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65 \ + --hash=sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92 annotated-types==0.6.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43 \ --hash=sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d babel==2.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363 \ --hash=sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \ --hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \ @@ -122,67 +122,67 @@ jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb -markupsafe==2.1.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0042d6a9880b38e1dd9ff83146cc3c9c18a059b9360ceae207805567aacccc69 \ - --hash=sha256:0c26f67b3fe27302d3a412b85ef696792c4a2386293c53ba683a89562f9399b0 \ - --hash=sha256:0fbad3d346df8f9d72622ac71b69565e621ada2ce6572f37c2eae8dacd60385d \ - --hash=sha256:15866d7f2dc60cfdde12ebb4e75e41be862348b4728300c36cdf405e258415ec \ - --hash=sha256:1c98c33ffe20e9a489145d97070a435ea0679fddaabcafe19982fe9c971987d5 \ - --hash=sha256:21e7af8091007bf4bebf4521184f4880a6acab8df0df52ef9e513d8e5db23411 \ - --hash=sha256:23984d1bdae01bee794267424af55eef4dfc038dc5d1272860669b2aa025c9e3 \ - --hash=sha256:31f57d64c336b8ccb1966d156932f3daa4fee74176b0fdc48ef580be774aae74 \ - --hash=sha256:3583a3a3ab7958e354dc1d25be74aee6228938312ee875a22330c4dc2e41beb0 \ - --hash=sha256:36d7626a8cca4d34216875aee5a1d3d654bb3dac201c1c003d182283e3205949 \ - --hash=sha256:396549cea79e8ca4ba65525470d534e8a41070e6b3500ce2414921099cb73e8d \ - --hash=sha256:3a66c36a3864df95e4f62f9167c734b3b1192cb0851b43d7cc08040c074c6279 \ - --hash=sha256:3aae9af4cac263007fd6309c64c6ab4506dd2b79382d9d19a1994f9240b8db4f \ - --hash=sha256:3ab3a886a237f6e9c9f4f7d272067e712cdb4efa774bef494dccad08f39d8ae6 \ - --hash=sha256:47bb5f0142b8b64ed1399b6b60f700a580335c8e1c57f2f15587bd072012decc \ - --hash=sha256:49a3b78a5af63ec10d8604180380c13dcd870aba7928c1fe04e881d5c792dc4e \ - --hash=sha256:4df98d4a9cd6a88d6a585852f56f2155c9cdb6aec78361a19f938810aa020954 \ - --hash=sha256:5045e892cfdaecc5b4c01822f353cf2c8feb88a6ec1c0adef2a2e705eef0f656 \ - --hash=sha256:5244324676254697fe5c181fc762284e2c5fceeb1c4e3e7f6aca2b6f107e60dc \ - --hash=sha256:54635102ba3cf5da26eb6f96c4b8c53af8a9c0d97b64bdcb592596a6255d8518 \ - --hash=sha256:54a7e1380dfece8847c71bf7e33da5d084e9b889c75eca19100ef98027bd9f56 \ - --hash=sha256:55d03fea4c4e9fd0ad75dc2e7e2b6757b80c152c032ea1d1de487461d8140efc \ - --hash=sha256:698e84142f3f884114ea8cf83e7a67ca8f4ace8454e78fe960646c6c91c63bfa \ - --hash=sha256:6aa5e2e7fc9bc042ae82d8b79d795b9a62bd8f15ba1e7594e3db243f158b5565 \ - --hash=sha256:7653fa39578957bc42e5ebc15cf4361d9e0ee4b702d7d5ec96cdac860953c5b4 \ - --hash=sha256:765f036a3d00395a326df2835d8f86b637dbaf9832f90f5d196c3b8a7a5080cb \ - --hash=sha256:78bc995e004681246e85e28e068111a4c3f35f34e6c62da1471e844ee1446250 \ - --hash=sha256:7a07f40ef8f0fbc5ef1000d0c78771f4d5ca03b4953fc162749772916b298fc4 \ - --hash=sha256:8b570a1537367b52396e53325769608f2a687ec9a4363647af1cded8928af959 \ - --hash=sha256:987d13fe1d23e12a66ca2073b8d2e2a75cec2ecb8eab43ff5624ba0ad42764bc \ - --hash=sha256:9896fca4a8eb246defc8b2a7ac77ef7553b638e04fbf170bff78a40fa8a91474 \ - --hash=sha256:9e9e3c4020aa2dc62d5dd6743a69e399ce3de58320522948af6140ac959ab863 \ - --hash=sha256:a0b838c37ba596fcbfca71651a104a611543077156cb0a26fe0c475e1f152ee8 \ - --hash=sha256:a4d176cfdfde84f732c4a53109b293d05883e952bbba68b857ae446fa3119b4f \ - --hash=sha256:a76055d5cb1c23485d7ddae533229039b850db711c554a12ea64a0fd8a0129e2 \ - --hash=sha256:a76cd37d229fc385738bd1ce4cba2a121cf26b53864c1772694ad0ad348e509e \ - --hash=sha256:a7cc49ef48a3c7a0005a949f3c04f8baa5409d3f663a1b36f0eba9bfe2a0396e \ - --hash=sha256:abf5ebbec056817057bfafc0445916bb688a255a5146f900445d081db08cbabb \ - --hash=sha256:b0fe73bac2fed83839dbdbe6da84ae2a31c11cfc1c777a40dbd8ac8a6ed1560f \ - --hash=sha256:b6f14a9cd50c3cb100eb94b3273131c80d102e19bb20253ac7bd7336118a673a \ - --hash=sha256:b83041cda633871572f0d3c41dddd5582ad7d22f65a72eacd8d3d6d00291df26 \ - --hash=sha256:b835aba863195269ea358cecc21b400276747cc977492319fd7682b8cd2c253d \ - --hash=sha256:bf1196dcc239e608605b716e7b166eb5faf4bc192f8a44b81e85251e62584bd2 \ - --hash=sha256:c669391319973e49a7c6230c218a1e3044710bc1ce4c8e6eb71f7e6d43a2c131 \ - --hash=sha256:c7556bafeaa0a50e2fe7dc86e0382dea349ebcad8f010d5a7dc6ba568eaaa789 \ - --hash=sha256:c8f253a84dbd2c63c19590fa86a032ef3d8cc18923b8049d91bcdeeb2581fbf6 \ - --hash=sha256:d18b66fe626ac412d96c2ab536306c736c66cf2a31c243a45025156cc190dc8a \ - --hash=sha256:d5291d98cd3ad9a562883468c690a2a238c4a6388ab3bd155b0c75dd55ece858 \ - --hash=sha256:d5c31fe855c77cad679b302aabc42d724ed87c043b1432d457f4976add1c2c3e \ - --hash=sha256:d6e427c7378c7f1b2bef6a344c925b8b63623d3321c09a237b7cc0e77dd98ceb \ - --hash=sha256:dac1ebf6983148b45b5fa48593950f90ed6d1d26300604f321c74a9ca1609f8e \ - --hash=sha256:de8153a7aae3835484ac168a9a9bdaa0c5eee4e0bc595503c95d53b942879c84 \ - --hash=sha256:e1a0d1924a5013d4f294087e00024ad25668234569289650929ab871231668e7 \ - --hash=sha256:e7902211afd0af05fbadcc9a312e4cf10f27b779cf1323e78d52377ae4b72bea \ - --hash=sha256:e888ff76ceb39601c59e219f281466c6d7e66bd375b4ec1ce83bcdc68306796b \ - --hash=sha256:f06e5a9e99b7df44640767842f414ed5d7bedaaa78cd817ce04bbd6fd86e2dd6 \ - --hash=sha256:f6be2d708a9d0e9b0054856f07ac7070fbe1754be40ca8525d5adccdbda8f475 \ - --hash=sha256:f9917691f410a2e0897d1ef99619fd3f7dd503647c8ff2475bf90c3cf222ad74 \ - --hash=sha256:fc1a75aa8f11b87910ffd98de62b29d6520b6d6e8a3de69a70ca34dea85d2a8a \ - --hash=sha256:fe8512ed897d5daf089e5bd010c3dc03bb1bdae00b35588c49b98268d4a01e00 +markupsafe==2.1.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf \ + --hash=sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff \ + --hash=sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f \ + --hash=sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3 \ + --hash=sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532 \ + --hash=sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f \ + --hash=sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617 \ + --hash=sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df \ + --hash=sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4 \ + --hash=sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906 \ + --hash=sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f \ + --hash=sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4 \ + --hash=sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8 \ + --hash=sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371 \ + --hash=sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2 \ + --hash=sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465 \ + --hash=sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52 \ + --hash=sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6 \ + --hash=sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169 \ + --hash=sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad \ + --hash=sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2 \ + --hash=sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0 \ + --hash=sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029 \ + --hash=sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f \ + --hash=sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a \ + --hash=sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced \ + --hash=sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5 \ + --hash=sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c \ + --hash=sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf \ + --hash=sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9 \ + --hash=sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb \ + --hash=sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad \ + --hash=sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3 \ + --hash=sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1 \ + --hash=sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46 \ + --hash=sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc \ + --hash=sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a \ + --hash=sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee \ + --hash=sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900 \ + --hash=sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5 \ + --hash=sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea \ + --hash=sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f \ + --hash=sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5 \ + --hash=sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e \ + --hash=sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a \ + --hash=sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f \ + --hash=sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50 \ + --hash=sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a \ + --hash=sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b \ + --hash=sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4 \ + --hash=sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff \ + --hash=sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2 \ + --hash=sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46 \ + --hash=sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b \ + --hash=sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf \ + --hash=sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5 \ + --hash=sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5 \ + --hash=sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab \ + --hash=sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd \ + --hash=sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68 mdit-py-plugins==0.4.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9 \ --hash=sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b @@ -195,92 +195,92 @@ myst-parser==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ packaging==23.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 -pydantic-core==2.16.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:06f0d5a1d9e1b7932477c172cc720b3b23c18762ed7a8efa8398298a59d177c7 \ - --hash=sha256:07982b82d121ed3fc1c51faf6e8f57ff09b1325d2efccaa257dd8c0dd937acca \ - --hash=sha256:0f478ec204772a5c8218e30eb813ca43e34005dff2eafa03931b3d8caef87d51 \ - --hash=sha256:102569d371fadc40d8f8598a59379c37ec60164315884467052830b28cc4e9da \ - --hash=sha256:10dca874e35bb60ce4f9f6665bfbfad050dd7573596608aeb9e098621ac331dc \ - --hash=sha256:150ba5c86f502c040b822777e2e519b5625b47813bd05f9273a8ed169c97d9ae \ - --hash=sha256:1661c668c1bb67b7cec96914329d9ab66755911d093bb9063c4c8914188af6d4 \ - --hash=sha256:1a2fe7b00a49b51047334d84aafd7e39f80b7675cad0083678c58983662da89b \ - --hash=sha256:1ae8048cba95f382dba56766525abca438328455e35c283bb202964f41a780b0 \ - --hash=sha256:20f724a023042588d0f4396bbbcf4cffd0ddd0ad3ed4f0d8e6d4ac4264bae81e \ - --hash=sha256:2133b0e412a47868a358713287ff9f9a328879da547dc88be67481cdac529118 \ - --hash=sha256:21e3298486c4ea4e4d5cc6fb69e06fb02a4e22089304308817035ac006a7f506 \ - --hash=sha256:21ebaa4bf6386a3b22eec518da7d679c8363fb7fb70cf6972161e5542f470798 \ - --hash=sha256:23632132f1fd608034f1a56cc3e484be00854db845b3a4a508834be5a6435a6f \ - --hash=sha256:2d5bea8012df5bb6dda1e67d0563ac50b7f64a5d5858348b5c8cb5043811c19d \ - --hash=sha256:300616102fb71241ff477a2cbbc847321dbec49428434a2f17f37528721c4948 \ - --hash=sha256:30a8259569fbeec49cfac7fda3ec8123486ef1b729225222f0d41d5f840b476f \ - --hash=sha256:399166f24c33a0c5759ecc4801f040dbc87d412c1a6d6292b2349b4c505effc9 \ - --hash=sha256:3fac641bbfa43d5a1bed99d28aa1fded1984d31c670a95aac1bf1d36ac6ce137 \ - --hash=sha256:42c29d54ed4501a30cd71015bf982fa95e4a60117b44e1a200290ce687d3e640 \ - --hash=sha256:462d599299c5971f03c676e2b63aa80fec5ebc572d89ce766cd11ca8bcb56f3f \ - --hash=sha256:4eebbd049008eb800f519578e944b8dc8e0f7d59a5abb5924cc2d4ed3a1834ff \ - --hash=sha256:502c062a18d84452858f8aea1e520e12a4d5228fc3621ea5061409d666ea1706 \ - --hash=sha256:5317c04349472e683803da262c781c42c5628a9be73f4750ac7d13040efb5d2d \ - --hash=sha256:5511f962dd1b9b553e9534c3b9c6a4b0c9ded3d8c2be96e61d56f933feef9e1f \ - --hash=sha256:561be4e3e952c2f9056fba5267b99be4ec2afadc27261505d4992c50b33c513c \ - --hash=sha256:601d3e42452cd4f2891c13fa8c70366d71851c1593ed42f57bf37f40f7dca3c8 \ - --hash=sha256:644904600c15816a1f9a1bafa6aab0d21db2788abcdf4e2a77951280473f33e1 \ - --hash=sha256:653a5dfd00f601a0ed6654a8b877b18d65ac32c9d9997456e0ab240807be6cf7 \ - --hash=sha256:694a5e9f1f2c124a17ff2d0be613fd53ba0c26de588eb4bdab8bca855e550d95 \ - --hash=sha256:71b4a48a7427f14679f0015b13c712863d28bb1ab700bd11776a5368135c7d60 \ - --hash=sha256:72bf9308a82b75039b8c8edd2be2924c352eda5da14a920551a8b65d5ee89253 \ - --hash=sha256:735dceec50fa907a3c314b84ed609dec54b76a814aa14eb90da31d1d36873a5e \ - --hash=sha256:73802194f10c394c2bedce7a135ba1d8ba6cff23adf4217612bfc5cf060de34c \ - --hash=sha256:780daad9e35b18d10d7219d24bfb30148ca2afc309928e1d4d53de86822593dc \ - --hash=sha256:8655f55fe68c4685673265a650ef71beb2d31871c049c8b80262026f23605ee3 \ - --hash=sha256:877045a7969ace04d59516d5d6a7dee13106822f99a5d8df5e6822941f7bedc8 \ - --hash=sha256:87bce04f09f0552b66fca0c4e10da78d17cb0e71c205864bab4e9595122cb9d9 \ - --hash=sha256:8d4dfc66abea3ec6d9f83e837a8f8a7d9d3a76d25c9911735c76d6745950e62c \ - --hash=sha256:8ec364e280db4235389b5e1e6ee924723c693cbc98e9d28dc1767041ff9bc388 \ - --hash=sha256:8fa00fa24ffd8c31fac081bf7be7eb495be6d248db127f8776575a746fa55c95 \ - --hash=sha256:920c4897e55e2881db6a6da151198e5001552c3777cd42b8a4c2f72eedc2ee91 \ - --hash=sha256:920f4633bee43d7a2818e1a1a788906df5a17b7ab6fe411220ed92b42940f818 \ - --hash=sha256:9795f56aa6b2296f05ac79d8a424e94056730c0b860a62b0fdcfe6340b658cc8 \ - --hash=sha256:98f0edee7ee9cc7f9221af2e1b95bd02810e1c7a6d115cfd82698803d385b28f \ - --hash=sha256:99c095457eea8550c9fa9a7a992e842aeae1429dab6b6b378710f62bfb70b394 \ - --hash=sha256:99d3a433ef5dc3021c9534a58a3686c88363c591974c16c54a01af7efd741f13 \ - --hash=sha256:99f9a50b56713a598d33bc23a9912224fc5d7f9f292444e6664236ae471ddf17 \ - --hash=sha256:9c46e556ee266ed3fb7b7a882b53df3c76b45e872fdab8d9cf49ae5e91147fd7 \ - --hash=sha256:9f5d37ff01edcbace53a402e80793640c25798fb7208f105d87a25e6fcc9ea06 \ - --hash=sha256:a0b4cfe408cd84c53bab7d83e4209458de676a6ec5e9c623ae914ce1cb79b96f \ - --hash=sha256:a497be217818c318d93f07e14502ef93d44e6a20c72b04c530611e45e54c2196 \ - --hash=sha256:ac89ccc39cd1d556cc72d6752f252dc869dde41c7c936e86beac5eb555041b66 \ - --hash=sha256:adf28099d061a25fbcc6531febb7a091e027605385de9fe14dd6a97319d614cf \ - --hash=sha256:afa01d25769af33a8dac0d905d5c7bb2d73c7c3d5161b2dd6f8b5b5eea6a3c4c \ - --hash=sha256:b1fc07896fc1851558f532dffc8987e526b682ec73140886c831d773cef44b76 \ - --hash=sha256:b49c604ace7a7aa8af31196abbf8f2193be605db6739ed905ecaf62af31ccae0 \ - --hash=sha256:b9f3e0bffad6e238f7acc20c393c1ed8fab4371e3b3bc311020dfa6020d99212 \ - --hash=sha256:ba07646f35e4e49376c9831130039d1b478fbfa1215ae62ad62d2ee63cf9c18f \ - --hash=sha256:bd88f40f2294440d3f3c6308e50d96a0d3d0973d6f1a5732875d10f569acef49 \ - --hash=sha256:c0be58529d43d38ae849a91932391eb93275a06b93b79a8ab828b012e916a206 \ - --hash=sha256:c45f62e4107ebd05166717ac58f6feb44471ed450d07fecd90e5f69d9bf03c48 \ - --hash=sha256:c56da23034fe66221f2208c813d8aa509eea34d97328ce2add56e219c3a9f41c \ - --hash=sha256:c94b5537bf6ce66e4d7830c6993152940a188600f6ae044435287753044a8fe2 \ - --hash=sha256:cebf8d56fee3b08ad40d332a807ecccd4153d3f1ba8231e111d9759f02edfd05 \ - --hash=sha256:d0bf6f93a55d3fa7a079d811b29100b019784e2ee6bc06b0bb839538272a5610 \ - --hash=sha256:d195add190abccefc70ad0f9a0141ad7da53e16183048380e688b466702195dd \ - --hash=sha256:d25ef0c33f22649b7a088035fd65ac1ce6464fa2876578df1adad9472f918a76 \ - --hash=sha256:d6cbdf12ef967a6aa401cf5cdf47850559e59eedad10e781471c960583f25aa1 \ - --hash=sha256:d8c032ccee90b37b44e05948b449a2d6baed7e614df3d3f47fe432c952c21b60 \ - --hash=sha256:daff04257b49ab7f4b3f73f98283d3dbb1a65bf3500d55c7beac3c66c310fe34 \ - --hash=sha256:e83ebbf020be727d6e0991c1b192a5c2e7113eb66e3def0cd0c62f9f266247e4 \ - --hash=sha256:ed3025a8a7e5a59817b7494686d449ebfbe301f3e757b852c8d0d1961d6be864 \ - --hash=sha256:f1936ef138bed2165dd8573aa65e3095ef7c2b6247faccd0e15186aabdda7f66 \ - --hash=sha256:f5247a3d74355f8b1d780d0f3b32a23dd9f6d3ff43ef2037c6dcd249f35ecf4c \ - --hash=sha256:fa496cd45cda0165d597e9d6f01e36c33c9508f75cf03c0a650018c5048f578e \ - --hash=sha256:fb4363e6c9fc87365c2bc777a1f585a22f2f56642501885ffc7942138499bf54 \ - --hash=sha256:fb4370b15111905bf8b5ba2129b926af9470f014cb0493a67d23e9d7a48348e8 \ - --hash=sha256:fbec2af0ebafa57eb82c18c304b37c86a8abddf7022955d1742b3d5471a6339e -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a -pydantic==2.6.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:1440966574e1b5b99cf75a13bec7b20e3512e8a61b894ae252f56275e2c465ae \ - --hash=sha256:ae887bd94eb404b09d86e4d12f93893bdca79d766e738528c6fa1c849f3c6bcf +pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379 \ + --hash=sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06 \ + --hash=sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05 \ + --hash=sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7 \ + --hash=sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753 \ + --hash=sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a \ + --hash=sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731 \ + --hash=sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc \ + --hash=sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380 \ + --hash=sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3 \ + --hash=sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c \ + --hash=sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11 \ + --hash=sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990 \ + --hash=sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a \ + --hash=sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2 \ + --hash=sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8 \ + --hash=sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97 \ + --hash=sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a \ + --hash=sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8 \ + --hash=sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef \ + --hash=sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77 \ + --hash=sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33 \ + --hash=sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82 \ + --hash=sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5 \ + --hash=sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b \ + --hash=sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55 \ + --hash=sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e \ + --hash=sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b \ + --hash=sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7 \ + --hash=sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec \ + --hash=sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc \ + --hash=sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469 \ + --hash=sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b \ + --hash=sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20 \ + --hash=sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e \ + --hash=sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d \ + --hash=sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f \ + --hash=sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b \ + --hash=sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039 \ + --hash=sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e \ + --hash=sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2 \ + --hash=sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f \ + --hash=sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b \ + --hash=sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc \ + --hash=sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8 \ + --hash=sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522 \ + --hash=sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e \ + --hash=sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784 \ + --hash=sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a \ + --hash=sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890 \ + --hash=sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485 \ + --hash=sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545 \ + --hash=sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f \ + --hash=sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943 \ + --hash=sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878 \ + --hash=sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f \ + --hash=sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17 \ + --hash=sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7 \ + --hash=sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286 \ + --hash=sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c \ + --hash=sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb \ + --hash=sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646 \ + --hash=sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978 \ + --hash=sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8 \ + --hash=sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15 \ + --hash=sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272 \ + --hash=sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2 \ + --hash=sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55 \ + --hash=sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf \ + --hash=sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545 \ + --hash=sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4 \ + --hash=sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a \ + --hash=sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804 \ + --hash=sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4 \ + --hash=sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0 \ + --hash=sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a \ + --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ + --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ + --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 +pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ + --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 pygments==2.17.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 @@ -317,7 +317,6 @@ pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ - --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -357,18 +356,18 @@ snowballstemmer==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ sphinx-rtd-theme==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b \ --hash=sha256:ec93d0856dc280cf3aee9a4c9807c60e027c7f7b461b77aeffed682e68f0e586 -sphinx==7.1.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:780f4d32f1d7d1126576e0e5ecc19dc32ab76cd24e950228dcf7b1f6d3d9e22f \ - --hash=sha256:d170a81825b2fcacb6dfd5a0d7f578a053e45d3f2b153fecc948c37344eb4cbe -sphinxcontrib-applehelp==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228 \ - --hash=sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e -sphinxcontrib-devhelp==1.0.2 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e \ - --hash=sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4 -sphinxcontrib-htmlhelp==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff \ - --hash=sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903 +sphinx==7.2.6 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560 \ + --hash=sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5 +sphinxcontrib-applehelp==1.0.8 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:c40a4f96f3776c4393d933412053962fac2b84f4c99a7982ba42e09576a70619 \ + --hash=sha256:cb61eb0ec1b61f349e5cc36b2028e9e7ca765be05e49641c97241274753067b4 +sphinxcontrib-devhelp==1.0.6 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:6485d09629944511c893fa11355bda18b742b83a2b181f9a009f7e500595c90f \ + --hash=sha256:9893fd3f90506bc4b97bdb977ceb8fbd823989f4316b28c3841ec128544372d3 +sphinxcontrib-htmlhelp==2.0.5 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0dc87637d5de53dd5eec3a6a01753b1ccf99494bd756aafecd74b4fa9e729015 \ + --hash=sha256:393f04f112b4d2f53d93448d4bce35842f62b307ccdc549ec1585e950bc35e04 sphinxcontrib-jquery==4.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a \ --hash=sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae @@ -378,18 +377,18 @@ sphinxcontrib-jsmath==1.0.1 ; python_version >= "3.10" and python_version < "4.0 sphinxcontrib-mermaid==0.9.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:252ef13dd23164b28f16d8b0205cf184b9d8e2b714a302274d9f59eb708e77af \ --hash=sha256:6795a72037ca55e65663d2a2c1a043d636dc3d30d418e56dd6087d1459d98a5d -sphinxcontrib-qthelp==1.0.3 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72 \ - --hash=sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6 -sphinxcontrib-serializinghtml==1.1.5 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd \ - --hash=sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952 +sphinxcontrib-qthelp==1.0.7 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:053dedc38823a80a7209a80860b16b722e9e0209e32fea98c90e4e6624588ed6 \ + --hash=sha256:e2ae3b5c492d58fcbd73281fbd27e34b8393ec34a073c792642cd8e529288182 +sphinxcontrib-serializinghtml==1.1.10 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:326369b8df80a7d2d8d7f99aa5ac577f51ea51556ed974e7716cfd4fca3f6cb7 \ + --hash=sha256:93f3f5dc458b91b192fe10c397e324f262cf163d79f3282c158e8436a2c4511f typer[all]==0.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:50922fd79aea2f4751a8e0408ff10d2662bd0c8bbfa84755a699f3bada2978b2 \ --hash=sha256:5d96d986a21493606a358cae4461bd8cdf83cbf33a5aa950ae629ca3b51467ee typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783 \ --hash=sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd -urllib3==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:55901e917a5896a349ff771be919f8bd99aff50b79fe58fec595eb37bbc56bb3 \ - --hash=sha256:df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 diff --git a/rocky/poetry.lock b/rocky/poetry.lock index ceba4a9f116..302cccdad1e 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -223,13 +223,13 @@ cffi = ">=1.0.0" [[package]] name = "certifi" -version = "2023.11.17" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, - {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] @@ -422,63 +422,63 @@ files = [ [[package]] name = "coverage" -version = "7.4.1" +version = "7.4.2" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7"}, - {file = "coverage-7.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25"}, - {file = "coverage-7.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c"}, - {file = "coverage-7.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b"}, - {file = "coverage-7.4.1-cp310-cp310-win32.whl", hash = "sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016"}, - {file = "coverage-7.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295"}, - {file = "coverage-7.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd"}, - {file = "coverage-7.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1"}, - {file = "coverage-7.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6"}, - {file = "coverage-7.4.1-cp311-cp311-win32.whl", hash = "sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5"}, - {file = "coverage-7.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581"}, - {file = "coverage-7.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156"}, - {file = "coverage-7.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1"}, - {file = "coverage-7.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc"}, - {file = "coverage-7.4.1-cp312-cp312-win32.whl", hash = "sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74"}, - {file = "coverage-7.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218"}, - {file = "coverage-7.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06"}, - {file = "coverage-7.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60"}, - {file = "coverage-7.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad"}, - {file = "coverage-7.4.1-cp38-cp38-win32.whl", hash = "sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042"}, - {file = "coverage-7.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54"}, - {file = "coverage-7.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950"}, - {file = "coverage-7.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756"}, - {file = "coverage-7.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35"}, - {file = "coverage-7.4.1-cp39-cp39-win32.whl", hash = "sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c"}, - {file = "coverage-7.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a"}, - {file = "coverage-7.4.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166"}, - {file = "coverage-7.4.1.tar.gz", hash = "sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04"}, + {file = "coverage-7.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bf54c3e089179d9d23900e3efc86d46e4431188d9a657f345410eecdd0151f50"}, + {file = "coverage-7.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fe6e43c8b510719b48af7db9631b5fbac910ade4bd90e6378c85ac5ac706382c"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b98c89db1b150d851a7840142d60d01d07677a18f0f46836e691c38134ed18b"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5f9683be6a5b19cd776ee4e2f2ffb411424819c69afab6b2db3a0a364ec6642"}, + {file = "coverage-7.4.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78cdcbf7b9cb83fe047ee09298e25b1cd1636824067166dc97ad0543b079d22f"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2599972b21911111114100d362aea9e70a88b258400672626efa2b9e2179609c"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ef00d31b7569ed3cb2036f26565f1984b9fc08541731ce01012b02a4c238bf03"}, + {file = "coverage-7.4.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:20a875bfd8c282985c4720c32aa05056f77a68e6d8bbc5fe8632c5860ee0b49b"}, + {file = "coverage-7.4.2-cp310-cp310-win32.whl", hash = "sha256:b3f2b1eb229f23c82898eedfc3296137cf1f16bb145ceab3edfd17cbde273fb7"}, + {file = "coverage-7.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7df95fdd1432a5d2675ce630fef5f239939e2b3610fe2f2b5bf21fa505256fa3"}, + {file = "coverage-7.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a8ddbd158e069dded57738ea69b9744525181e99974c899b39f75b2b29a624e2"}, + {file = "coverage-7.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81a5fb41b0d24447a47543b749adc34d45a2cf77b48ca74e5bf3de60a7bd9edc"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2412e98e70f16243be41d20836abd5f3f32edef07cbf8f407f1b6e1ceae783ac"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb79414c15c6f03f56cc68fa06994f047cf20207c31b5dad3f6bab54a0f66ef"}, + {file = "coverage-7.4.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf89ab85027427d351f1de918aff4b43f4eb5f33aff6835ed30322a86ac29c9e"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a178b7b1ac0f1530bb28d2e51f88c0bab3e5949835851a60dda80bff6052510c"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:06fe398145a2e91edaf1ab4eee66149c6776c6b25b136f4a86fcbbb09512fd10"}, + {file = "coverage-7.4.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:18cac867950943fe93d6cd56a67eb7dcd2d4a781a40f4c1e25d6f1ed98721a55"}, + {file = "coverage-7.4.2-cp311-cp311-win32.whl", hash = "sha256:f72cdd2586f9a769570d4b5714a3837b3a59a53b096bb954f1811f6a0afad305"}, + {file = "coverage-7.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:d779a48fac416387dd5673fc5b2d6bd903ed903faaa3247dc1865c65eaa5a93e"}, + {file = "coverage-7.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:adbdfcda2469d188d79771d5696dc54fab98a16d2ef7e0875013b5f56a251047"}, + {file = "coverage-7.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ac4bab32f396b03ebecfcf2971668da9275b3bb5f81b3b6ba96622f4ef3f6e17"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:006d220ba2e1a45f1de083d5022d4955abb0aedd78904cd5a779b955b019ec73"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3733545eb294e5ad274abe131d1e7e7de4ba17a144505c12feca48803fea5f64"}, + {file = "coverage-7.4.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42a9e754aa250fe61f0f99986399cec086d7e7a01dd82fd863a20af34cbce962"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:2ed37e16cf35c8d6e0b430254574b8edd242a367a1b1531bd1adc99c6a5e00fe"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:b953275d4edfab6cc0ed7139fa773dfb89e81fee1569a932f6020ce7c6da0e8f"}, + {file = "coverage-7.4.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32b4ab7e6c924f945cbae5392832e93e4ceb81483fd6dc4aa8fb1a97b9d3e0e1"}, + {file = "coverage-7.4.2-cp312-cp312-win32.whl", hash = "sha256:f5df76c58977bc35a49515b2fbba84a1d952ff0ec784a4070334dfbec28a2def"}, + {file = "coverage-7.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:34423abbaad70fea9d0164add189eabaea679068ebdf693baa5c02d03e7db244"}, + {file = "coverage-7.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5b11f9c6587668e495cc7365f85c93bed34c3a81f9f08b0920b87a89acc13469"}, + {file = "coverage-7.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:51593a1f05c39332f623d64d910445fdec3d2ac2d96b37ce7f331882d5678ddf"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69f1665165ba2fe7614e2f0c1aed71e14d83510bf67e2ee13df467d1c08bf1e8"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3c8bbb95a699c80a167478478efe5e09ad31680931ec280bf2087905e3b95ec"}, + {file = "coverage-7.4.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:175f56572f25e1e1201d2b3e07b71ca4d201bf0b9cb8fad3f1dfae6a4188de86"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8562ca91e8c40864942615b1d0b12289d3e745e6b2da901d133f52f2d510a1e3"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d9a1ef0f173e1a19738f154fb3644f90d0ada56fe6c9b422f992b04266c55d5a"}, + {file = "coverage-7.4.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f40ac873045db4fd98a6f40387d242bde2708a3f8167bd967ccd43ad46394ba2"}, + {file = "coverage-7.4.2-cp38-cp38-win32.whl", hash = "sha256:d1b750a8409bec61caa7824bfd64a8074b6d2d420433f64c161a8335796c7c6b"}, + {file = "coverage-7.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b4ae777bebaed89e3a7e80c4a03fac434a98a8abb5251b2a957d38fe3fd30088"}, + {file = "coverage-7.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3ff7f92ae5a456101ca8f48387fd3c56eb96353588e686286f50633a611afc95"}, + {file = "coverage-7.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:861d75402269ffda0b33af94694b8e0703563116b04c681b1832903fac8fd647"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3507427d83fa961cbd73f11140f4a5ce84208d31756f7238d6257b2d3d868405"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bf711d517e21fb5bc429f5c4308fbc430a8585ff2a43e88540264ae87871e36a"}, + {file = "coverage-7.4.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c00e54f0bd258ab25e7f731ca1d5144b0bf7bec0051abccd2bdcff65fa3262c9"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f8e845d894e39fb53834da826078f6dc1a933b32b1478cf437007367efaf6f6a"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:840456cb1067dc350af9080298c7c2cfdddcedc1cb1e0b30dceecdaf7be1a2d3"}, + {file = "coverage-7.4.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c11ca2df2206a4e3e4c4567f52594637392ed05d7c7fb73b4ea1c658ba560265"}, + {file = "coverage-7.4.2-cp39-cp39-win32.whl", hash = "sha256:3ff5bdb08d8938d336ce4088ca1a1e4b6c8cd3bef8bb3a4c0eb2f37406e49643"}, + {file = "coverage-7.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:ac9e95cefcf044c98d4e2c829cd0669918585755dd9a92e28a1a7012322d0a95"}, + {file = "coverage-7.4.2-pp38.pp39.pp310-none-any.whl", hash = "sha256:f593a4a90118d99014517c2679e04a4ef5aee2d81aa05c26c734d271065efcb6"}, + {file = "coverage-7.4.2.tar.gz", hash = "sha256:1a5ee18e3a8d766075ce9314ed1cb695414bae67df6a4b0805f5137d93d6f1cb"}, ] [package.dependencies] @@ -489,12 +489,12 @@ toml = ["tomli"] [[package]] name = "cssbeautifier" -version = "1.15.0" +version = "1.15.1" description = "CSS unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "cssbeautifier-1.15.0.tar.gz", hash = "sha256:7ab092581365698d1e270bdf114c268f567e63f6122dbb5f4dfc0e6ef64030ea"}, + {file = "cssbeautifier-1.15.1.tar.gz", hash = "sha256:9f7064362aedd559c55eeecf6b6bed65e05f33488dcbe39044f0403c26e1c006"}, ] [package.dependencies] @@ -825,22 +825,22 @@ tqdm = ">=4.62.2,<5.0.0" [[package]] name = "dnspython" -version = "2.5.0" +version = "2.6.1" description = "DNS toolkit" optional = false python-versions = ">=3.8" files = [ - {file = "dnspython-2.5.0-py3-none-any.whl", hash = "sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6"}, - {file = "dnspython-2.5.0.tar.gz", hash = "sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15"}, + {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, + {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, ] [package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=5.0.3)", "mypy (>=1.0.1)", "pylint (>=2.7)", "pytest (>=6.2.5)", "pytest-cov (>=3.0.0)", "sphinx (>=7.0.0)", "twine (>=4.0.0)", "wheel (>=0.41.0)"] +dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=0.17.3)", "httpx (>=0.25.1)"] -doq = ["aioquic (>=0.9.20)"] -idna = ["idna (>=2.1)"] -trio = ["trio (>=0.14)"] +doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] +doq = ["aioquic (>=0.9.25)"] +idna = ["idna (>=3.6)"] +trio = ["trio (>=0.23)"] wmi = ["wmi (>=1.5.1)"] [[package]] @@ -909,13 +909,13 @@ doc = ["Sphinx", "sphinx-rtd-theme", "sphinxcontrib-spelling"] [[package]] name = "faker" -version = "23.2.0" +version = "23.2.1" description = "Faker is a Python package that generates fake data for you." optional = false python-versions = ">=3.8" files = [ - {file = "Faker-23.2.0-py3-none-any.whl", hash = "sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952"}, - {file = "Faker-23.2.0.tar.gz", hash = "sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9"}, + {file = "Faker-23.2.1-py3-none-any.whl", hash = "sha256:0520a6b97e07c658b2798d7140971c1d5bc4bcd5013e7937fe075fd054aa320c"}, + {file = "Faker-23.2.1.tar.gz", hash = "sha256:f07b64d27f67b62c7f0536a72f47813015b3b51cd4664918454011094321e464"}, ] [package.dependencies] @@ -923,53 +923,53 @@ python-dateutil = ">=2.4" [[package]] name = "fonttools" -version = "4.48.1" +version = "4.49.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f"}, - {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e"}, - {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738"}, - {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124"}, - {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee"}, - {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2"}, - {file = "fonttools-4.48.1-cp310-cp310-win32.whl", hash = "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec"}, - {file = "fonttools-4.48.1-cp310-cp310-win_amd64.whl", hash = "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703"}, - {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61"}, - {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f"}, - {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7"}, - {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7"}, - {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01"}, - {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48"}, - {file = "fonttools-4.48.1-cp311-cp311-win32.whl", hash = "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e"}, - {file = "fonttools-4.48.1-cp311-cp311-win_amd64.whl", hash = "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a"}, - {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea"}, - {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0"}, - {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252"}, - {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81"}, - {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68"}, - {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092"}, - {file = "fonttools-4.48.1-cp312-cp312-win32.whl", hash = "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d"}, - {file = "fonttools-4.48.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5"}, - {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348"}, - {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a"}, - {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1"}, - {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31"}, - {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac"}, - {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5"}, - {file = "fonttools-4.48.1-cp38-cp38-win32.whl", hash = "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2"}, - {file = "fonttools-4.48.1-cp38-cp38-win_amd64.whl", hash = "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784"}, - {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4"}, - {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95"}, - {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d"}, - {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a"}, - {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814"}, - {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e"}, - {file = "fonttools-4.48.1-cp39-cp39-win32.whl", hash = "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199"}, - {file = "fonttools-4.48.1-cp39-cp39-win_amd64.whl", hash = "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070"}, - {file = "fonttools-4.48.1-py3-none-any.whl", hash = "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e"}, - {file = "fonttools-4.48.1.tar.gz", hash = "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828"}, + {file = "fonttools-4.49.0-cp310-cp310-win32.whl", hash = "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b"}, + {file = "fonttools-4.49.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86"}, + {file = "fonttools-4.49.0-cp311-cp311-win32.whl", hash = "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e"}, + {file = "fonttools-4.49.0-cp311-cp311-win_amd64.whl", hash = "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7"}, + {file = "fonttools-4.49.0-cp312-cp312-win32.whl", hash = "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880"}, + {file = "fonttools-4.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036"}, + {file = "fonttools-4.49.0-cp38-cp38-win32.whl", hash = "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844"}, + {file = "fonttools-4.49.0-cp38-cp38-win_amd64.whl", hash = "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c"}, + {file = "fonttools-4.49.0-cp39-cp39-win32.whl", hash = "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133"}, + {file = "fonttools-4.49.0-cp39-cp39-win_amd64.whl", hash = "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836"}, + {file = "fonttools-4.49.0-py3-none-any.whl", hash = "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18"}, + {file = "fonttools-4.49.0.tar.gz", hash = "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321"}, ] [package.dependencies] @@ -1315,12 +1315,12 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsbeautifier" -version = "1.15.0" +version = "1.15.1" description = "JavaScript unobfuscator and beautifier." optional = false python-versions = "*" files = [ - {file = "jsbeautifier-1.15.0.tar.gz", hash = "sha256:b44acb3e890799985999fa38247b6ed5766d8a7de912b6f1ff8d41ca3cd1b53f"}, + {file = "jsbeautifier-1.15.1.tar.gz", hash = "sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24"}, ] [package.dependencies] @@ -1329,13 +1329,13 @@ six = ">=1.13.0" [[package]] name = "json5" -version = "0.9.14" +version = "0.9.17" description = "A Python implementation of the JSON5 data format." optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "json5-0.9.14-py2.py3-none-any.whl", hash = "sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f"}, - {file = "json5-0.9.14.tar.gz", hash = "sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02"}, + {file = "json5-0.9.17-py2.py3-none-any.whl", hash = "sha256:f8ec1ecf985951d70f780f6f877c4baca6a47b6e61e02c4cd190138d10a7805a"}, + {file = "json5-0.9.17.tar.gz", hash = "sha256:717d99d657fa71b7094877b1d921b1cce40ab444389f6d770302563bb7dfd9ae"}, ] [package.extras] @@ -2243,19 +2243,23 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.1.0" +version = "2.2.1" description = "Settings management using Pydantic" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, - {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, + {file = "pydantic_settings-2.2.1-py3-none-any.whl", hash = "sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091"}, + {file = "pydantic_settings-2.2.1.tar.gz", hash = "sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed"}, ] [package.dependencies] pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" +[package.extras] +toml = ["tomli (>=2.0.1)"] +yaml = ["pyyaml (>=6.0.1)"] + [[package]] name = "pydyf" version = "0.8.0" @@ -3263,13 +3267,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.0" +version = "2.2.1" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, - {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, ] [package.extras] @@ -3561,4 +3565,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "73dd0e19c27e22d9d27f33de45a019bf019b896f7738eefb5283d105f1909dfd" +content-hash = "c76491504011cc0b4f1ad75b0d0c7782472a100221fc969f3f2f54df405b5519" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index 4c837d265da..e4c658aafbb 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -9,7 +9,6 @@ license = "EUPL" python = "^3.10" asgiref = "^3.6.0" beautifulsoup4 = "^4.11.2" -certifi = "^2023.7.22" Django = "^4.2.7" django-formtools = "^2.4.1" django-otp = "^1.1.3" diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index 99ef5a15edb..61a15cff0cf 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -128,9 +128,9 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -281,61 +281,61 @@ click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 -coverage[toml]==7.4.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0193657651f5399d433c92f8ae264aff31fc1d066deee4b831549526433f3f61 \ - --hash=sha256:02f2edb575d62172aa28fe00efe821ae31f25dc3d589055b3fb64d51e52e4ab1 \ - --hash=sha256:0491275c3b9971cdbd28a4595c2cb5838f08036bca31765bad5e17edf900b2c7 \ - --hash=sha256:077d366e724f24fc02dbfe9d946534357fda71af9764ff99d73c3c596001bbd7 \ - --hash=sha256:10e88e7f41e6197ea0429ae18f21ff521d4f4490aa33048f6c6f94c6045a6a75 \ - --hash=sha256:18e961aa13b6d47f758cc5879383d27b5b3f3dcd9ce8cdbfdc2571fe86feb4dd \ - --hash=sha256:1a78b656a4d12b0490ca72651fe4d9f5e07e3c6461063a9b6265ee45eb2bdd35 \ - --hash=sha256:1ed4b95480952b1a26d863e546fa5094564aa0065e1e5f0d4d0041f293251d04 \ - --hash=sha256:23b27b8a698e749b61809fb637eb98ebf0e505710ec46a8aa6f1be7dc0dc43a6 \ - --hash=sha256:23f5881362dcb0e1a92b84b3c2809bdc90db892332daab81ad8f642d8ed55042 \ - --hash=sha256:32a8d985462e37cfdab611a6f95b09d7c091d07668fdc26e47a725ee575fe166 \ - --hash=sha256:3468cc8720402af37b6c6e7e2a9cdb9f6c16c728638a2ebc768ba1ef6f26c3a1 \ - --hash=sha256:379d4c7abad5afbe9d88cc31ea8ca262296480a86af945b08214eb1a556a3e4d \ - --hash=sha256:3cacfaefe6089d477264001f90f55b7881ba615953414999c46cc9713ff93c8c \ - --hash=sha256:3e3424c554391dc9ef4a92ad28665756566a28fecf47308f91841f6c49288e66 \ - --hash=sha256:46342fed0fff72efcda77040b14728049200cbba1279e0bf1188f1f2078c1d70 \ - --hash=sha256:536d609c6963c50055bab766d9951b6c394759190d03311f3e9fcf194ca909e1 \ - --hash=sha256:5d6850e6e36e332d5511a48a251790ddc545e16e8beaf046c03985c69ccb2676 \ - --hash=sha256:6008adeca04a445ea6ef31b2cbaf1d01d02986047606f7da266629afee982630 \ - --hash=sha256:64e723ca82a84053dd7bfcc986bdb34af8d9da83c521c19d6b472bc6880e191a \ - --hash=sha256:6b00e21f86598b6330f0019b40fb397e705135040dbedc2ca9a93c7441178e74 \ - --hash=sha256:6d224f0c4c9c98290a6990259073f496fcec1b5cc613eecbd22786d398ded3ad \ - --hash=sha256:6dceb61d40cbfcf45f51e59933c784a50846dc03211054bd76b421a713dcdf19 \ - --hash=sha256:7ac8f8eb153724f84885a1374999b7e45734bf93a87d8df1e7ce2146860edef6 \ - --hash=sha256:85ccc5fa54c2ed64bd91ed3b4a627b9cce04646a659512a051fa82a92c04a448 \ - --hash=sha256:869b5046d41abfea3e381dd143407b0d29b8282a904a19cb908fa24d090cc018 \ - --hash=sha256:8bdb0285a0202888d19ec6b6d23d5990410decb932b709f2b0dfe216d031d218 \ - --hash=sha256:8dfc5e195bbef80aabd81596ef52a1277ee7143fe419efc3c4d8ba2754671756 \ - --hash=sha256:8e738a492b6221f8dcf281b67129510835461132b03024830ac0e554311a5c54 \ - --hash=sha256:918440dea04521f499721c039863ef95433314b1db00ff826a02580c1f503e45 \ - --hash=sha256:9641e21670c68c7e57d2053ddf6c443e4f0a6e18e547e86af3fad0795414a628 \ - --hash=sha256:9d2f9d4cc2a53b38cabc2d6d80f7f9b7e3da26b2f53d48f05876fef7956b6968 \ - --hash=sha256:a07f61fc452c43cd5328b392e52555f7d1952400a1ad09086c4a8addccbd138d \ - --hash=sha256:a3277f5fa7483c927fe3a7b017b39351610265308f5267ac6d4c2b64cc1d8d25 \ - --hash=sha256:a4a3907011d39dbc3e37bdc5df0a8c93853c369039b59efa33a7b6669de04c60 \ - --hash=sha256:aeb2c2688ed93b027eb0d26aa188ada34acb22dceea256d76390eea135083950 \ - --hash=sha256:b094116f0b6155e36a304ff912f89bbb5067157aff5f94060ff20bbabdc8da06 \ - --hash=sha256:b8ffb498a83d7e0305968289441914154fb0ef5d8b3157df02a90c6695978295 \ - --hash=sha256:b9bb62fac84d5f2ff523304e59e5c439955fb3b7f44e3d7b2085184db74d733b \ - --hash=sha256:c61f66d93d712f6e03369b6a7769233bfda880b12f417eefdd4f16d1deb2fc4c \ - --hash=sha256:ca6e61dc52f601d1d224526360cdeab0d0712ec104a2ce6cc5ccef6ed9a233bc \ - --hash=sha256:ca7b26a5e456a843b9b6683eada193fc1f65c761b3a473941efe5a291f604c74 \ - --hash=sha256:d12c923757de24e4e2110cf8832d83a886a4cf215c6e61ed506006872b43a6d1 \ - --hash=sha256:d17bbc946f52ca67adf72a5ee783cd7cd3477f8f8796f59b4974a9b59cacc9ee \ - --hash=sha256:dfd1e1b9f0898817babf840b77ce9fe655ecbe8b1b327983df485b30df8cc011 \ - --hash=sha256:e0860a348bf7004c812c8368d1fc7f77fe8e4c095d661a579196a9533778e156 \ - --hash=sha256:f2f5968608b1fe2a1d00d01ad1017ee27efd99b3437e08b83ded9b7af3f6f766 \ - --hash=sha256:f3771b23bb3675a06f5d885c3630b1d01ea6cac9e84a01aaf5508706dba546c5 \ - --hash=sha256:f68ef3660677e6624c8cace943e4765545f8191313a07288a53d3da188bd8581 \ - --hash=sha256:f86f368e1c7ce897bf2457b9eb61169a44e2ef797099fb5728482b8d69f3f016 \ - --hash=sha256:f90515974b39f4dea2f27c0959688621b46d96d5a626cf9c53dbc653a895c05c \ - --hash=sha256:fe558371c1bdf3b8fa03e097c523fb9645b8730399c14fe7721ee9c9e2a545d3 -cssbeautifier==1.15.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:7ab092581365698d1e270bdf114c268f567e63f6122dbb5f4dfc0e6ef64030ea +coverage[toml]==7.4.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:006d220ba2e1a45f1de083d5022d4955abb0aedd78904cd5a779b955b019ec73 \ + --hash=sha256:06fe398145a2e91edaf1ab4eee66149c6776c6b25b136f4a86fcbbb09512fd10 \ + --hash=sha256:175f56572f25e1e1201d2b3e07b71ca4d201bf0b9cb8fad3f1dfae6a4188de86 \ + --hash=sha256:18cac867950943fe93d6cd56a67eb7dcd2d4a781a40f4c1e25d6f1ed98721a55 \ + --hash=sha256:1a5ee18e3a8d766075ce9314ed1cb695414bae67df6a4b0805f5137d93d6f1cb \ + --hash=sha256:20a875bfd8c282985c4720c32aa05056f77a68e6d8bbc5fe8632c5860ee0b49b \ + --hash=sha256:2412e98e70f16243be41d20836abd5f3f32edef07cbf8f407f1b6e1ceae783ac \ + --hash=sha256:2599972b21911111114100d362aea9e70a88b258400672626efa2b9e2179609c \ + --hash=sha256:2ed37e16cf35c8d6e0b430254574b8edd242a367a1b1531bd1adc99c6a5e00fe \ + --hash=sha256:32b4ab7e6c924f945cbae5392832e93e4ceb81483fd6dc4aa8fb1a97b9d3e0e1 \ + --hash=sha256:34423abbaad70fea9d0164add189eabaea679068ebdf693baa5c02d03e7db244 \ + --hash=sha256:3507427d83fa961cbd73f11140f4a5ce84208d31756f7238d6257b2d3d868405 \ + --hash=sha256:3733545eb294e5ad274abe131d1e7e7de4ba17a144505c12feca48803fea5f64 \ + --hash=sha256:3ff5bdb08d8938d336ce4088ca1a1e4b6c8cd3bef8bb3a4c0eb2f37406e49643 \ + --hash=sha256:3ff7f92ae5a456101ca8f48387fd3c56eb96353588e686286f50633a611afc95 \ + --hash=sha256:42a9e754aa250fe61f0f99986399cec086d7e7a01dd82fd863a20af34cbce962 \ + --hash=sha256:51593a1f05c39332f623d64d910445fdec3d2ac2d96b37ce7f331882d5678ddf \ + --hash=sha256:5b11f9c6587668e495cc7365f85c93bed34c3a81f9f08b0920b87a89acc13469 \ + --hash=sha256:69f1665165ba2fe7614e2f0c1aed71e14d83510bf67e2ee13df467d1c08bf1e8 \ + --hash=sha256:78cdcbf7b9cb83fe047ee09298e25b1cd1636824067166dc97ad0543b079d22f \ + --hash=sha256:7df95fdd1432a5d2675ce630fef5f239939e2b3610fe2f2b5bf21fa505256fa3 \ + --hash=sha256:81a5fb41b0d24447a47543b749adc34d45a2cf77b48ca74e5bf3de60a7bd9edc \ + --hash=sha256:840456cb1067dc350af9080298c7c2cfdddcedc1cb1e0b30dceecdaf7be1a2d3 \ + --hash=sha256:8562ca91e8c40864942615b1d0b12289d3e745e6b2da901d133f52f2d510a1e3 \ + --hash=sha256:861d75402269ffda0b33af94694b8e0703563116b04c681b1832903fac8fd647 \ + --hash=sha256:8b98c89db1b150d851a7840142d60d01d07677a18f0f46836e691c38134ed18b \ + --hash=sha256:a178b7b1ac0f1530bb28d2e51f88c0bab3e5949835851a60dda80bff6052510c \ + --hash=sha256:a8ddbd158e069dded57738ea69b9744525181e99974c899b39f75b2b29a624e2 \ + --hash=sha256:ac4bab32f396b03ebecfcf2971668da9275b3bb5f81b3b6ba96622f4ef3f6e17 \ + --hash=sha256:ac9e95cefcf044c98d4e2c829cd0669918585755dd9a92e28a1a7012322d0a95 \ + --hash=sha256:adbdfcda2469d188d79771d5696dc54fab98a16d2ef7e0875013b5f56a251047 \ + --hash=sha256:b3c8bbb95a699c80a167478478efe5e09ad31680931ec280bf2087905e3b95ec \ + --hash=sha256:b3f2b1eb229f23c82898eedfc3296137cf1f16bb145ceab3edfd17cbde273fb7 \ + --hash=sha256:b4ae777bebaed89e3a7e80c4a03fac434a98a8abb5251b2a957d38fe3fd30088 \ + --hash=sha256:b953275d4edfab6cc0ed7139fa773dfb89e81fee1569a932f6020ce7c6da0e8f \ + --hash=sha256:bf54c3e089179d9d23900e3efc86d46e4431188d9a657f345410eecdd0151f50 \ + --hash=sha256:bf711d517e21fb5bc429f5c4308fbc430a8585ff2a43e88540264ae87871e36a \ + --hash=sha256:c00e54f0bd258ab25e7f731ca1d5144b0bf7bec0051abccd2bdcff65fa3262c9 \ + --hash=sha256:c11ca2df2206a4e3e4c4567f52594637392ed05d7c7fb73b4ea1c658ba560265 \ + --hash=sha256:c5f9683be6a5b19cd776ee4e2f2ffb411424819c69afab6b2db3a0a364ec6642 \ + --hash=sha256:cf89ab85027427d351f1de918aff4b43f4eb5f33aff6835ed30322a86ac29c9e \ + --hash=sha256:d1b750a8409bec61caa7824bfd64a8074b6d2d420433f64c161a8335796c7c6b \ + --hash=sha256:d779a48fac416387dd5673fc5b2d6bd903ed903faaa3247dc1865c65eaa5a93e \ + --hash=sha256:d9a1ef0f173e1a19738f154fb3644f90d0ada56fe6c9b422f992b04266c55d5a \ + --hash=sha256:ddb79414c15c6f03f56cc68fa06994f047cf20207c31b5dad3f6bab54a0f66ef \ + --hash=sha256:ef00d31b7569ed3cb2036f26565f1984b9fc08541731ce01012b02a4c238bf03 \ + --hash=sha256:f40ac873045db4fd98a6f40387d242bde2708a3f8167bd967ccd43ad46394ba2 \ + --hash=sha256:f593a4a90118d99014517c2679e04a4ef5aee2d81aa05c26c734d271065efcb6 \ + --hash=sha256:f5df76c58977bc35a49515b2fbba84a1d952ff0ec784a4070334dfbec28a2def \ + --hash=sha256:f72cdd2586f9a769570d4b5714a3837b3a59a53b096bb954f1811f6a0afad305 \ + --hash=sha256:f8e845d894e39fb53834da826078f6dc1a933b32b1478cf437007367efaf6f6a \ + --hash=sha256:fe6e43c8b510719b48af7db9631b5fbac910ade4bd90e6378c85ac5ac706382c +cssbeautifier==1.15.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:9f7064362aedd559c55eeecf6b6bed65e05f33488dcbe39044f0403c26e1c006 cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a \ --hash=sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969 @@ -384,9 +384,9 @@ djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0 djlint==1.34.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8 \ --hash=sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346 -dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ - --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 +dnspython==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \ + --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d @@ -398,52 +398,52 @@ exceptiongroup==1.2.0 ; python_version >= "3.10" and python_version < "3.11" \ factory-boy==3.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a2cdbdb63228177aa4f1c52f4b6d83fab2b8623bf602c7dedd7eb83c0f69c04c \ --hash=sha256:bc76d97d1a65bbd9842a6d722882098eb549ec8ee1081f9fb2e8ff29f0c300f1 -faker==23.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:2db4b60ef93d247a8fe5518d01ebafa8df3a5dffd40cbb9577b25c45b04a9952 \ - --hash=sha256:8631f712e85ae9208352442f74537927a92c439b83125f83e4798e5716764cc9 -fonttools[woff]==4.48.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252 \ - --hash=sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea \ - --hash=sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4 \ - --hash=sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e \ - --hash=sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac \ - --hash=sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61 \ - --hash=sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e \ - --hash=sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d \ - --hash=sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348 \ - --hash=sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee \ - --hash=sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199 \ - --hash=sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01 \ - --hash=sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2 \ - --hash=sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81 \ - --hash=sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814 \ - --hash=sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070 \ - --hash=sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68 \ - --hash=sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5 \ - --hash=sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7 \ - --hash=sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f \ - --hash=sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a \ - --hash=sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1 \ - --hash=sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e \ - --hash=sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a \ - --hash=sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092 \ - --hash=sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31 \ - --hash=sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7 \ - --hash=sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48 \ - --hash=sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2 \ - --hash=sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec \ - --hash=sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a \ - --hash=sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f \ - --hash=sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5 \ - --hash=sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0 \ - --hash=sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d \ - --hash=sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a \ - --hash=sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738 \ - --hash=sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95 \ - --hash=sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e \ - --hash=sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124 \ - --hash=sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784 \ - --hash=sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703 +faker==23.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0520a6b97e07c658b2798d7140971c1d5bc4bcd5013e7937fe075fd054aa320c \ + --hash=sha256:f07b64d27f67b62c7f0536a72f47813015b3b51cd4664918454011094321e464 +fonttools[woff]==4.49.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133 \ + --hash=sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828 \ + --hash=sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc \ + --hash=sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2 \ + --hash=sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559 \ + --hash=sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42 \ + --hash=sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf \ + --hash=sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c \ + --hash=sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036 \ + --hash=sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942 \ + --hash=sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86 \ + --hash=sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22 \ + --hash=sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5 \ + --hash=sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75 \ + --hash=sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a \ + --hash=sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd \ + --hash=sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814 \ + --hash=sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b \ + --hash=sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a \ + --hash=sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844 \ + --hash=sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034 \ + --hash=sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc \ + --hash=sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4 \ + --hash=sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18 \ + --hash=sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836 \ + --hash=sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9 \ + --hash=sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880 \ + --hash=sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb \ + --hash=sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff \ + --hash=sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7 \ + --hash=sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e \ + --hash=sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29 \ + --hash=sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532 \ + --hash=sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be \ + --hash=sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075 \ + --hash=sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717 \ + --hash=sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb \ + --hash=sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321 \ + --hash=sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e \ + --hash=sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e \ + --hash=sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6 \ + --hash=sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -620,11 +620,11 @@ iniconfig==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ jinja2==3.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa \ --hash=sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90 -jsbeautifier==1.15.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:b44acb3e890799985999fa38247b6ed5766d8a7de912b6f1ff8d41ca3cd1b53f -json5==0.9.14 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:740c7f1b9e584a468dbb2939d8d458db3427f2c93ae2139d05f47e453eae964f \ - --hash=sha256:9ed66c3a6ca3510a976a9ef9b8c0787de24802724ab1860bc0153c7fdd589b02 +jsbeautifier==1.15.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:ebd733b560704c602d744eafc839db60a1ee9326e30a2a80c4adb8718adc1b24 +json5==0.9.17 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:717d99d657fa71b7094877b1d921b1cce40ab444389f6d770302563bb7dfd9ae \ + --hash=sha256:f8ec1ecf985951d70f780f6f877c4baca6a47b6e61e02c4cd190138d10a7805a jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc \ --hash=sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c @@ -1076,9 +1076,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -1508,9 +1508,9 @@ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ diff --git a/rocky/requirements.txt b/rocky/requirements.txt index 972f0b83710..9acece0a8c9 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -125,9 +125,9 @@ brotlicffi==1.1.0.0 ; platform_python_implementation != "CPython" and python_ver --hash=sha256:ce01c7316aebc7fce59da734286148b1d1b9455f89cf2c8a4dfce7d41db55c2d \ --hash=sha256:d9eb71bb1085d996244439154387266fd23d6ad37161f6f52f1cd41dd95a3808 \ --hash=sha256:fa8ca0623b26c94fccc3a1fdd895be1743b838f3917300506d04aa3346fd2a14 -certifi==2023.11.17 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1 \ - --hash=sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474 +certifi==2024.2.2 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \ + --hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1 cffi==1.16.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc \ --hash=sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a \ @@ -322,55 +322,55 @@ django==4.2.10 ; python_version >= "3.10" and python_version < "4.0" \ djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -dnspython==2.5.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:6facdf76b73c742ccf2d07add296f178e629da60be23ce4b0a9c927b1e02c3a6 \ - --hash=sha256:a0034815a59ba9ae888946be7ccca8f7c157b286f8455b379c692efb51022a15 +dnspython==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \ + --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d -fonttools[woff]==4.48.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252 \ - --hash=sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea \ - --hash=sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4 \ - --hash=sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e \ - --hash=sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac \ - --hash=sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61 \ - --hash=sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e \ - --hash=sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d \ - --hash=sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348 \ - --hash=sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee \ - --hash=sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199 \ - --hash=sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01 \ - --hash=sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2 \ - --hash=sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81 \ - --hash=sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814 \ - --hash=sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070 \ - --hash=sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68 \ - --hash=sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5 \ - --hash=sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7 \ - --hash=sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f \ - --hash=sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a \ - --hash=sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1 \ - --hash=sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e \ - --hash=sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a \ - --hash=sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092 \ - --hash=sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31 \ - --hash=sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7 \ - --hash=sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48 \ - --hash=sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2 \ - --hash=sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec \ - --hash=sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a \ - --hash=sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f \ - --hash=sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5 \ - --hash=sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0 \ - --hash=sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d \ - --hash=sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a \ - --hash=sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738 \ - --hash=sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95 \ - --hash=sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e \ - --hash=sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124 \ - --hash=sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784 \ - --hash=sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703 +fonttools[woff]==4.49.0 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133 \ + --hash=sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828 \ + --hash=sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc \ + --hash=sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2 \ + --hash=sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559 \ + --hash=sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42 \ + --hash=sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf \ + --hash=sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c \ + --hash=sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036 \ + --hash=sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942 \ + --hash=sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86 \ + --hash=sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22 \ + --hash=sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5 \ + --hash=sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75 \ + --hash=sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a \ + --hash=sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd \ + --hash=sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814 \ + --hash=sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b \ + --hash=sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a \ + --hash=sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844 \ + --hash=sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034 \ + --hash=sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc \ + --hash=sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4 \ + --hash=sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18 \ + --hash=sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836 \ + --hash=sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9 \ + --hash=sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880 \ + --hash=sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb \ + --hash=sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff \ + --hash=sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7 \ + --hash=sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e \ + --hash=sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29 \ + --hash=sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532 \ + --hash=sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be \ + --hash=sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075 \ + --hash=sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717 \ + --hash=sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb \ + --hash=sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321 \ + --hash=sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e \ + --hash=sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e \ + --hash=sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6 \ + --hash=sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -815,9 +815,9 @@ pydantic-core==2.16.2 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113 \ --hash=sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d \ --hash=sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25 -pydantic-settings==2.1.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c \ - --hash=sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a +pydantic-settings==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:00b9f6a5e95553590434c0fa01ead0b216c3e10bc54ae02e37f359948643c5ed \ + --hash=sha256:0235391d26db4d2190cb9b31051c4b46882d28a51533f97440867f012d4da091 pydantic==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f \ --hash=sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9 @@ -1023,9 +1023,9 @@ typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ tzdata==2024.1 ; python_version >= "3.10" and python_version < "4.0" and sys_platform == "win32" \ --hash=sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd \ --hash=sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252 -urllib3==2.2.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20 \ - --hash=sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 +urllib3==2.2.1 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d \ + --hash=sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19 uvloop==0.18.0 ; sys_platform != "win32" and platform_python_implementation == "CPython" and python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:1121087dfeb46e9e65920b20d1f46322ba299b8d93f7cb61d76c94b5a1adc20c \ --hash=sha256:12af0d2e1b16780051d27c12de7e419b9daeb3516c503ab3e98d364cc55303bb \ From c915d4ab41a9024e6bebe1bf9165ab348ab41ecf Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Thu, 22 Feb 2024 14:40:20 +0100 Subject: [PATCH 64/85] Fix missing fmea __init__.py (#2553) Co-authored-by: Jan Klopper --- rocky/fmea/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rocky/fmea/__init__.py diff --git a/rocky/fmea/__init__.py b/rocky/fmea/__init__.py new file mode 100644 index 00000000000..e69de29bb2d From 624b67ad9c5006b908c83fff9236c118c660a392 Mon Sep 17 00:00:00 2001 From: Madelon Dohmen <99282220+madelondohmen@users.noreply.github.com> Date: Thu, 22 Feb 2024 15:39:00 +0100 Subject: [PATCH 65/85] Unit tests to Name Server Report (#2542) Co-authored-by: ammar92 Co-authored-by: Jeroen Dekkers --- rocky/tests/conftest.py | 53 +++++++++ .../tests/reports/test_name_server_report.py | 103 ++++++++++++++++++ 2 files changed, 156 insertions(+) create mode 100644 rocky/tests/reports/test_name_server_report.py diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 34b422605a4..b1e62a4e4f6 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -630,6 +630,59 @@ def finding_type_kat_no_dkim(): ) +@pytest.fixture +def finding_type_kat_uncommon_open_port(): + return KATFindingType( + id="KAT-UNCOMMON-OPEN-PORT", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=9.5, + risk_severity=RiskLevelSeverity.CRITICAL, + ) + + +@pytest.fixture +def finding_type_kat_open_sysadmin_port(): + return KATFindingType( + id="KAT-OPEN-SYSADMIN-PORT", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=8.5, + risk_severity=RiskLevelSeverity.HIGH, + ) + + +@pytest.fixture +def finding_type_kat_open_database_port(): + return KATFindingType( + id="KAT-OPEN-DATABASE-PORT", + description="Fake description...", + recommendation="Fake recommendation...", + risk_score=6.5, + risk_severity=RiskLevelSeverity.MEDIUM, + ) + + +@pytest.fixture +def finding_type_kat_no_dnssec(): + return KATFindingType( + id="KAT-NO-DNSSEC", + description="Fake description...", + recommendation="Fake recommendation...", + risk_severity=RiskLevelSeverity.PENDING, + ) + + +@pytest.fixture +def finding_type_kat_invalid_dnssec(): + return KATFindingType( + id="KAT-INVALID-DNSSEC", + recommendation="Fake recommendation...", + risk_score=3.0, + risk_severity=RiskLevelSeverity.LOW, + ) + + @pytest.fixture def plugin_details(): return parse_plugin( diff --git a/rocky/tests/reports/test_name_server_report.py b/rocky/tests/reports/test_name_server_report.py new file mode 100644 index 00000000000..cd5c92db930 --- /dev/null +++ b/rocky/tests/reports/test_name_server_report.py @@ -0,0 +1,103 @@ +from reports.report_types.name_server_report.report import NameServerSystemReport + + +def test_name_server_report_no_hostname(mock_octopoes_api_connector, valid_time, ipaddressv4): + mock_octopoes_api_connector.oois = { + ipaddressv4.reference: ipaddressv4, + } + + mock_octopoes_api_connector.queries = { + "IPAddress. Date: Thu, 22 Feb 2024 15:48:33 +0100 Subject: [PATCH 66/85] Make valid time required parameter in the octopoes API (#2543) Co-authored-by: Jan Klopper --- .pre-commit-config.yaml | 8 +- boefjes/boefjes/job_handler.py | 5 +- .../plugins/kat_manyportsopen/normalize.py | 7 +- .../scheduler/connectors/services/octopoes.py | 6 +- octopoes/octopoes/api/router.py | 14 +-- octopoes/octopoes/connector/octopoes.py | 101 ++++++++---------- .../tests/integration/test_api_connector.py | 18 ++-- .../tests/integration/test_ooi_deletion.py | 12 +-- octopoes/tests/robot/01_scan_profiles.robot | 6 +- octopoes/tests/robot/02_list_objects.robot | 8 +- .../tests/robot/04_save_declaration.robot | 3 +- .../robot/06_scan_profile_inheritance.robot | 3 +- octopoes/tests/robot/07_rerun_bits.robot | 15 +-- octopoes/tests/robot/08_findings.robot | 6 +- octopoes/tests/robot/robot.resource | 13 ++- octopoes/tests/test_api.py | 8 +- rocky/katalogus/views/plugin_detail.py | 8 +- rocky/onboarding/views.py | 2 +- .../reports/report_types/dns_report/report.py | 4 +- .../multi_organization_report/report.py | 8 +- .../reports/report_types/tls_report/report.py | 2 +- rocky/reports/views/multi_report.py | 4 +- rocky/rocky/views/finding_add.py | 2 +- rocky/rocky/views/mixins.py | 50 ++++----- rocky/rocky/views/ooi_delete.py | 4 +- rocky/rocky/views/ooi_detail.py | 7 +- rocky/rocky/views/ooi_mute.py | 6 +- rocky/rocky/views/ooi_report.py | 2 +- rocky/rocky/views/ooi_view.py | 3 +- rocky/tests/integration/test_reports.py | 4 +- rocky/tools/forms/finding_type.py | 8 +- rocky/tools/forms/ooi_form.py | 3 +- rocky/tools/ooi_helpers.py | 23 +--- 33 files changed, 191 insertions(+), 182 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index af16be28370..26e7695014f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -84,7 +84,13 @@ repos: ^boefjes/tools | ^keiko/templates | ^mula/whitelist\.py$ | - ^octopoes/ | + ^octopoes/bits | + ^octopoes/octopoes/core | + ^octopoes/octopoes/events | + ^octopoes/octopoes/models | + ^octopoes/octopoes/repositories | + ^octopoes/octopoes/xtdb | + ^octopoes/tools | ^rocky/whitelist\.py$ | /tests/ | docs/source/conf\.py$ | diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 1bc018bef5b..9479a02ee40 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -4,7 +4,7 @@ from collections.abc import Callable from datetime import datetime, timedelta, timezone from enum import Enum -from typing import Any +from typing import Any, cast import requests from pydantic.tools import parse_obj_as @@ -265,7 +265,8 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: if validated_scan_profiles: connector.save_many_scan_profiles( [self._parse_scan_profile(scan_profile) for scan_profile in results.scan_profiles], - valid_time=normalizer_meta.raw_data.boefje_meta.ended_at, + # Mypy doesn't seem to be able to figure out that ended_at is a datetime + valid_time=cast(datetime, normalizer_meta.raw_data.boefje_meta.ended_at), ) finally: normalizer_meta.ended_at = datetime.now(timezone.utc) diff --git a/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py b/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py index 89a7df26931..d2c62e35632 100644 --- a/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py +++ b/boefjes/boefjes/plugins/kat_manyportsopen/normalize.py @@ -15,9 +15,10 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: connector = OctopoesAPIConnector(str(settings.octopoes_api), boefje_meta.organization) + current_time = datetime.now(timezone.utc) # Get current ports try: - current_tree = connector.get_tree(ooi, types={IPPort}, depth=1) + current_tree = connector.get_tree(ooi, valid_time=current_time, types={IPPort}, depth=1) except ObjectNotFoundException: # This IP doesn't exist anymore return @@ -28,9 +29,9 @@ def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: current_ports.add(ooi.port) # Get ports from a week ago - last_week = datetime.now(timezone.utc) - timedelta(days=7) + last_week = current_time - timedelta(days=7) try: - old_tree = connector.get_tree(ooi, types={IPPort}, depth=1, valid_time=last_week) + old_tree = connector.get_tree(ooi, valid_time=last_week, types={IPPort}, depth=1) except ObjectNotFoundException: # This IP was not known a week ago return diff --git a/mula/scheduler/connectors/services/octopoes.py b/mula/scheduler/connectors/services/octopoes.py index d2ae17cb117..126e25f11b0 100644 --- a/mula/scheduler/connectors/services/octopoes.py +++ b/mula/scheduler/connectors/services/octopoes.py @@ -1,3 +1,5 @@ +from datetime import datetime, timezone + from scheduler.connectors.errors import exception_handler from scheduler.models import OOI, Organisation @@ -36,6 +38,7 @@ def get_objects_by_object_types( "scan_level": {s for s in scan_level}, "offset": 0, "limit": 1, + "valid_time": datetime.now(timezone.utc), } # Get the total count of objects @@ -66,6 +69,7 @@ def get_random_objects(self, organisation_id: str, n: int, scan_level: list[int] params = { "amount": str(n), "scan_level": {s for s in scan_level}, + "valid_time": datetime.now(timezone.utc), } response = self.get(url, params=params) @@ -76,7 +80,7 @@ def get_random_objects(self, organisation_id: str, n: int, scan_level: list[int] def get_object(self, organisation_id: str, reference: str) -> OOI: """Get an ooi from octopoes""" url = f"{self.host}/{organisation_id}" - response = self.get(url, params={"reference": reference}) + response = self.get(url, params={"reference": reference, "valid_time": datetime.now(timezone.utc)}) return OOI(**response.json()) def is_healthy(self) -> bool: diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index 39ab49c71b9..522fb564731 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -1,7 +1,7 @@ import uuid from collections import Counter from collections.abc import Generator -from datetime import datetime, timezone +from datetime import datetime from logging import getLogger from fastapi import APIRouter, Body, Depends, HTTPException, Path, Query, status @@ -50,13 +50,7 @@ def extract_client(client: str = Path(...)) -> str: return client -def extract_valid_time(valid_time: AwareDatetime | None = Query(None)) -> datetime: - if valid_time is None: - return datetime.now(timezone.utc) - return valid_time - - -def extract_required_valid_time(valid_time: AwareDatetime) -> datetime: +def extract_valid_time(valid_time: AwareDatetime) -> datetime: return valid_time @@ -330,7 +324,7 @@ def list_scan_profiles( def save_scan_profile( scan_profile: ScanProfile = Body(discriminator="scan_profile_type"), octopoes: OctopoesService = Depends(octopoes_service), - valid_time: datetime = Depends(extract_required_valid_time), + valid_time: datetime = Depends(extract_valid_time), ) -> None: try: old_scan_profile = octopoes.scan_profile_repository.get(scan_profile.reference, valid_time) @@ -361,7 +355,7 @@ def save_many( @router.get("/scan_profiles/recalculate", tags=["Scan Profiles"]) def recalculate_scan_profiles( octopoes: OctopoesService = Depends(octopoes_service), - valid_time: datetime = Depends(extract_required_valid_time), + valid_time: datetime = Depends(extract_valid_time), ) -> None: octopoes.recalculate_scan_profiles(valid_time) octopoes.commit() diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index e6426df323d..f7648e36576 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -1,4 +1,5 @@ import json +from collections.abc import Set from datetime import datetime from uuid import UUID @@ -54,12 +55,12 @@ def _verify_response(response: Response) -> None: def request( self, - method: str, + method: str | bytes, url: str | bytes, - params: dict | None = None, + *args, **kwargs, ) -> requests.Response: - response = super().request(method, f"{self._base_uri}{url}", params, **kwargs) + response = super().request(method, f"{self._base_uri}{str(url)}", *args, **kwargs) self._verify_response(response) return response @@ -90,15 +91,15 @@ def health(self) -> ServiceHealth: def list_objects( self, types: set[type[OOI]], - valid_time: datetime | None = None, + valid_time: datetime, offset: int = DEFAULT_OFFSET, limit: int = DEFAULT_LIMIT, scan_level: set[ScanLevel] = DEFAULT_SCAN_LEVEL_FILTER, scan_profile_type: set[ScanProfileType] = DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) -> Paginated[OOIType]: - params = { + params: dict[str, str | int | list[str] | set[str]] = { "types": [t.__name__ for t in types], - "valid_time": valid_time, + "valid_time": str(valid_time), "offset": offset, "limit": limit, "scan_level": {s.value for s in scan_level}, @@ -107,10 +108,10 @@ def list_objects( res = self.session.get(f"/{self.client}/objects", params=params) return TypeAdapter(Paginated[OOIType]).validate_json(res.content) - def get(self, reference: Reference, valid_time: datetime | None = None) -> OOI: + def get(self, reference: Reference, valid_time: datetime) -> OOI: res = self.session.get( f"/{self.client}/object", - params={"reference": str(reference), "valid_time": valid_time}, + params={"reference": str(reference), "valid_time": str(valid_time)}, ) return TypeAdapter(OOIType).validate_json(res.content) @@ -125,43 +126,37 @@ def get_history( limit: int | None = None, indices: list[int] | None = None, ) -> list[TransactionRecord]: - res = self.session.get( - f"/{self.client}/object-history", - params={ - "reference": str(reference), - "sort_order": sort_order, - "with_docs": with_docs, - "has_doc": has_doc, - "offset": offset, - "limit": limit, - "indices": indices, - }, - ) + params: dict[str, str | int | list[int] | None] = { + "reference": str(reference), + "sort_order": sort_order, + "with_docs": with_docs, + "has_doc": has_doc, + "offset": offset, + "limit": limit, + "indices": indices, + } + res = self.session.get(f"/{self.client}/object-history", params=params) return TypeAdapter(list[TransactionRecord]).validate_json(res.content) def get_tree( self, reference: Reference, - types: set | None = None, - depth: int | None = 1, - valid_time: datetime | None = None, + valid_time: datetime, + types: Set = frozenset(), + depth: int = 1, ) -> ReferenceTree: - if types is None: - types = set() - res = self.session.get( - f"/{self.client}/tree", - params={ - "reference": str(reference), - "types": [t.__name__ for t in types], - "depth": depth, - "valid_time": valid_time, - }, - ) + params: dict[str, str | int | list[str]] = { + "reference": str(reference), + "types": [t.__name__ for t in types], + "depth": depth, + "valid_time": str(valid_time), + } + res = self.session.get(f"/{self.client}/tree", params=params) return ReferenceTree.model_validate_json(res.content) def list_origins( self, - valid_time: datetime | None = None, + valid_time: datetime, source: Reference | None = None, result: Reference | None = None, task_id: UUID | None = None, @@ -170,7 +165,7 @@ def list_origins( res = self.session.get( f"/{self.client}/origins", params={ - "valid_time": valid_time, + "valid_time": str(valid_time), "source": source, "result": result, "task_id": str(task_id) if task_id else None, @@ -193,24 +188,24 @@ def save_scan_profile(self, scan_profile: ScanProfile, valid_time: datetime): params = {"valid_time": str(valid_time)} self.session.put(f"/{self.client}/scan_profiles", params=params, data=scan_profile.model_dump_json()) - def save_many_scan_profiles(self, scan_profiles: list[ScanProfile], valid_time: datetime | None = None) -> None: - params = {"valid_time": valid_time} + def save_many_scan_profiles(self, scan_profiles: list[ScanProfile], valid_time: datetime) -> None: + params = {"valid_time": str(valid_time)} self.session.post( f"/{self.client}/scan_profiles/save_many", params=params, json=[json.loads(scan_profile.model_dump_json()) for scan_profile in scan_profiles], ) - def delete(self, reference: Reference, valid_time: datetime | None = None) -> None: - params = {"reference": str(reference), "valid_time": valid_time} + def delete(self, reference: Reference, valid_time: datetime) -> None: + params = {"reference": str(reference), "valid_time": str(valid_time)} self.session.delete(f"/{self.client}/", params=params) - def delete_many(self, references: list[Reference], valid_time: datetime | None = None) -> None: - params = {"valid_time": valid_time} + def delete_many(self, references: list[Reference], valid_time: datetime) -> None: + params = {"valid_time": str(valid_time)} self.session.post(f"/{self.client}/objects/delete_many", params=params, json=[str(ref) for ref in references]) - def list_origin_parameters(self, origin_id: set[str], valid_time: datetime | None = None) -> list[OriginParameter]: - params = {"origin_id": origin_id, "valid_time": valid_time} + def list_origin_parameters(self, origin_id: set[str], valid_time: datetime) -> list[OriginParameter]: + params = {"origin_id": origin_id, "valid_time": str(valid_time)} res = self.session.get(f"/{self.client}/origin_parameters", params=params) return TypeAdapter(list[OriginParameter]).validate_json(res.content) @@ -220,29 +215,27 @@ def create_node(self): def delete_node(self): self.session.delete(f"/{self.client}/node") - def get_scan_profile_inheritance( - self, reference: Reference, valid_time: datetime | None = None - ) -> list[InheritanceSection]: - params = {"reference": str(reference), "valid_time": valid_time} + def get_scan_profile_inheritance(self, reference: Reference, valid_time: datetime) -> list[InheritanceSection]: + params = {"reference": str(reference), "valid_time": str(valid_time)} res = self.session.get(f"/{self.client}/scan_profiles/inheritance", params=params) return TypeAdapter(list[InheritanceSection]).validate_json(res.content) - def count_findings_by_severity(self, valid_time: datetime | None = None) -> dict[str, int]: - params = {"valid_time": valid_time} + def count_findings_by_severity(self, valid_time: datetime) -> dict[str, int]: + params = {"valid_time": str(valid_time)} res = self.session.get(f"/{self.client}/findings/count_by_severity", params=params) return res.json() def list_findings( self, severities: set[RiskLevelSeverity], + valid_time: datetime, exclude_muted: bool = True, only_muted: bool = False, - valid_time: datetime | None = None, offset: int = DEFAULT_OFFSET, limit: int = DEFAULT_LIMIT, ) -> Paginated[Finding]: - params = { - "valid_time": valid_time, + params: dict[str, str | int | list[str] | set[str]] = { + "valid_time": str(valid_time), "offset": offset, "limit": limit, "severities": {s.value for s in severities}, @@ -275,7 +268,7 @@ def query( params = { "path": path, "source": source, - "valid_time": valid_time, + "valid_time": str(valid_time), "offset": offset, "limit": limit, } diff --git a/octopoes/tests/integration/test_api_connector.py b/octopoes/tests/integration/test_api_connector.py index 2e69bfb3817..d70b10b6af4 100644 --- a/octopoes/tests/integration/test_api_connector.py +++ b/octopoes/tests/integration/test_api_connector.py @@ -44,12 +44,12 @@ def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, valid_tim [DeclaredScanProfile(reference=ooi.reference, level=ScanLevel.L2) for ooi in hostnames + [network]], valid_time ) - assert octopoes_api_connector.list_objects(types={Network}).count == 1 - assert octopoes_api_connector.list_objects(types={Hostname}).count == 10 - assert octopoes_api_connector.list_objects(types={Network, Hostname}).count == 11 + assert octopoes_api_connector.list_objects(types={Network}, valid_time=valid_time).count == 1 + assert octopoes_api_connector.list_objects(types={Hostname}, valid_time=valid_time).count == 10 + assert octopoes_api_connector.list_objects(types={Network, Hostname}, valid_time=valid_time).count == 11 - assert len(octopoes_api_connector.list_origins(task_id=uuid.uuid4())) == 0 - origins = octopoes_api_connector.list_origins(task_id=task_id) + assert len(octopoes_api_connector.list_origins(task_id=uuid.uuid4(), valid_time=valid_time)) == 0 + origins = octopoes_api_connector.list_origins(task_id=task_id, valid_time=valid_time) assert len(origins) == 1 assert origins[0].dict() == { "method": "normalizer_id", @@ -59,11 +59,13 @@ def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, valid_tim "task_id": task_id, } - assert len(octopoes_api_connector.list_origins(result=hostnames[0].reference)) == 1 + assert len(octopoes_api_connector.list_origins(result=hostnames[0].reference, valid_time=valid_time)) == 1 # Delete even-numbered test hostnames - octopoes_api_connector.delete_many([Reference.from_str(f"Hostname|test|test{i}") for i in range(0, 10, 2)]) - assert octopoes_api_connector.list_objects(types={Network, Hostname}).count == 6 + octopoes_api_connector.delete_many( + [Reference.from_str(f"Hostname|test|test{i}") for i in range(0, 10, 2)], valid_time=valid_time + ) + assert octopoes_api_connector.list_objects(types={Network, Hostname}, valid_time=valid_time).count == 6 def test_history(octopoes_api_connector: OctopoesAPIConnector): diff --git a/octopoes/tests/integration/test_ooi_deletion.py b/octopoes/tests/integration/test_ooi_deletion.py index f066c14567c..0eab85b75ae 100644 --- a/octopoes/tests/integration/test_ooi_deletion.py +++ b/octopoes/tests/integration/test_ooi_deletion.py @@ -38,10 +38,10 @@ def test_hostname_nxd_ooi(octopoes_api_connector: OctopoesAPIConnector, valid_ti hostname = Hostname(network=network.reference, name=url) octopoes_api_connector.save_declaration(Declaration(ooi=hostname, valid_time=valid_time)) - original_size = len(octopoes_api_connector.list_origins(task_id={})) + original_size = len(octopoes_api_connector.list_origins(task_id={}, valid_time=valid_time)) assert original_size >= 2 octopoes_api_connector.recalculate_bits() - bits_size = len(octopoes_api_connector.list_origins(task_id={})) + bits_size = len(octopoes_api_connector.list_origins(task_id={}, valid_time=valid_time)) assert bits_size >= original_size nxd = NXDOMAIN(hostname=hostname.reference) @@ -56,17 +56,17 @@ def test_hostname_nxd_ooi(octopoes_api_connector: OctopoesAPIConnector, valid_ti ) octopoes_api_connector.recalculate_bits() - octopoes_api_connector.delete(network.reference) - octopoes_api_connector.delete(hostname.reference) + octopoes_api_connector.delete(network.reference, valid_time=valid_time) + octopoes_api_connector.delete(hostname.reference, valid_time=valid_time) # This sleep is here because otherwise on some systems this test will fail # Delete when issue #2083 is resolved... time.sleep(2) - assert len(octopoes_api_connector.list_origins(task_id={})) < bits_size + assert len(octopoes_api_connector.list_origins(task_id={}, valid_time=valid_time)) < bits_size octopoes_api_connector.recalculate_bits() - assert len(octopoes_api_connector.list_origins(task_id={})) < original_size + assert len(octopoes_api_connector.list_origins(task_id={}, valid_time=valid_time)) < original_size def test_events_created_through_crud(xtdb_octopoes_service: OctopoesService, event_manager: Mock, valid_time: datetime): diff --git a/octopoes/tests/robot/01_scan_profiles.robot b/octopoes/tests/robot/01_scan_profiles.robot index 34f247cd1d2..bf0450ffa88 100644 --- a/octopoes/tests/robot/01_scan_profiles.robot +++ b/octopoes/tests/robot/01_scan_profiles.robot @@ -80,7 +80,10 @@ Set Scan Profile To Empty Verify Scan Level [Arguments] ${reference} ${scan_level} - ${response} Get ${OCTOPOES_URI}/object params=reference=${reference} + ${params} Create Dictionary + ... reference=${reference} + ... valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/object params=${params} Should Be Equal As Integers ${response.status_code} 200 Should Be Equal ${response.headers["content-type"]} application/json ${response_data} Set Variable ${response.json()} @@ -109,7 +112,6 @@ Verify Scan Profile Increment Queue Verify Scan LeveL Filter [Arguments] ${scan_level} ${expected_count} - ${params} Get Valid Time Params ${params} Create Dictionary ... scan_level=${scan_level} ... valid_time=${VALID_TIME} diff --git a/octopoes/tests/robot/02_list_objects.robot b/octopoes/tests/robot/02_list_objects.robot index f0023a38870..2fbba6435bb 100644 --- a/octopoes/tests/robot/02_list_objects.robot +++ b/octopoes/tests/robot/02_list_objects.robot @@ -42,21 +42,23 @@ Verify Object List With Filter Should Be Equal ${response_data["count"]} ${6} Get Objects With ScanLevel 0 - ${response} Get ${OCTOPOES_URI}/objects params=scan_level=0 + ${params} Create Dictionary scan_level=0 valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/objects params=${params} ${response_data} Set Variable ${response.json()} Should Be Equal As Integers ${response.status_code} 200 RETURN ${response_data} Length Of Random Object List With Filter Should Be [Arguments] ${scan_levels} ${expected_length} - ${params} Create Dictionary scan_level=${scan_levels} amount=10 + ${params} Create Dictionary scan_level=${scan_levels} amount=10 valid_time=${VALID_TIME} ${response} Get ${OCTOPOES_URI}/objects/random params=${params} Should Be Equal As Integers ${response.status_code} 200 Length Should Be ${response.json()} ${expected_length} Verify Bulk Load [Arguments] ${references} - ${response} Post ${OCTOPOES_URI}/objects/load_bulk json=@{references} + ${params} Create Dictionary valid_time=${VALID_TIME} + ${response} Post ${OCTOPOES_URI}/objects/load_bulk json=@{references} params=${params} Log ${response.json()} Should Be Equal As Integers ${response.status_code} 200 FOR ${reference} IN @{references} diff --git a/octopoes/tests/robot/04_save_declaration.robot b/octopoes/tests/robot/04_save_declaration.robot index a8fd81d411b..7ec66d4e437 100644 --- a/octopoes/tests/robot/04_save_declaration.robot +++ b/octopoes/tests/robot/04_save_declaration.robot @@ -20,7 +20,8 @@ Add Several Append Origins *** Keywords *** Verify Origin Present [Arguments] ${reference} ${origin_task_id} - ${response} Get ${OCTOPOES_URI}/origins params=result=${reference} + ${params} Create Dictionary result=${reference} valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/origins params=${params} Should Be Equal As Integers ${response.status_code} 200 ${length} Get Length ${response.json()} Should Be Equal As Integers ${length} 1 diff --git a/octopoes/tests/robot/06_scan_profile_inheritance.robot b/octopoes/tests/robot/06_scan_profile_inheritance.robot index c7c21faa46e..99dac110300 100644 --- a/octopoes/tests/robot/06_scan_profile_inheritance.robot +++ b/octopoes/tests/robot/06_scan_profile_inheritance.robot @@ -21,7 +21,8 @@ Setup Test Get Scan Profile Inheritance [Arguments] ${reference} - ${response} Get ${OCTOPOES_URI}/scan_profiles/inheritance params=reference=${reference} + ${params} Create Dictionary reference=${reference} valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/scan_profiles/inheritance params=${params} Should Be Equal As Integers ${response.status_code} 200 ${response_data} Set Variable ${response.json()} RETURN ${response_data} diff --git a/octopoes/tests/robot/07_rerun_bits.robot b/octopoes/tests/robot/07_rerun_bits.robot index 358ad5e727d..adb9c9ad560 100644 --- a/octopoes/tests/robot/07_rerun_bits.robot +++ b/octopoes/tests/robot/07_rerun_bits.robot @@ -13,7 +13,7 @@ Rerun bits Await Sync # check that only two origins exist, one observation, and one inference - Verify Origin Present Hostname|internet|example.com 2 + Verify Origin Present Hostname|internet|example.com 2 ${VALID_TIME} # add the new bit to the bits folder and restart containers ${container_id_worker} Run docker ps -aqf 'name=octopoes-ci_octopoes_api_worker' @@ -32,17 +32,20 @@ Rerun bits # make sure that new origin still does not exist Await Sync - Verify Origin Present Hostname|internet|example.com 2 + Verify Origin Present Hostname|internet|example.com 2 ${VALID_TIME} - ${response} Post ${OCTOPOES_URI}/bits/recalculate + ${params} Create Dictionary valid_time=${VALID_TIME} + ${response} Post ${OCTOPOES_URI}/bits/recalculate params=${params} Await Sync - Verify Origin Present Hostname|internet|example.com 3 + ${date} Get Current Date time_zone=UTC + Verify Origin Present Hostname|internet|example.com 3 ${date}+00:00 *** Keywords *** Verify Origin Present - [Arguments] ${reference} ${expected_amout_of_origins} - ${response} Get ${OCTOPOES_URI}/origins params=result=${reference} + [Arguments] ${reference} ${expected_amout_of_origins} ${valid_time_argument} + ${params} Create Dictionary result=${reference} valid_time=${valid_time_argument} + ${response} Get ${OCTOPOES_URI}/origins params=${params} Should Be Equal As Integers ${response.status_code} 200 ${length} Get Length ${response.json()} Should Be Equal As Integers ${length} ${expected_amout_of_origins} diff --git a/octopoes/tests/robot/08_findings.robot b/octopoes/tests/robot/08_findings.robot index 97ebf3aabca..cbd3d903ed0 100644 --- a/octopoes/tests/robot/08_findings.robot +++ b/octopoes/tests/robot/08_findings.robot @@ -28,12 +28,14 @@ Setup Test Await Sync List Findings - ${response} Get ${OCTOPOES_URI}/findings + ${params} Create Dictionary valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/findings params=${params} ${response_data} Set Variable ${response.json()} RETURN ${response_data} Get Count Per Severity - ${response} Get ${OCTOPOES_URI}/findings/count_by_severity + ${params} Create Dictionary valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/findings/count_by_severity params=${params} ${response_data} Set Variable ${response.json()} RETURN ${response_data} diff --git a/octopoes/tests/robot/robot.resource b/octopoes/tests/robot/robot.resource index dad126c52c3..44c41a9fe18 100644 --- a/octopoes/tests/robot/robot.resource +++ b/octopoes/tests/robot/robot.resource @@ -111,7 +111,8 @@ Await Sync Wait For XTDB Synced Get Objects - ${response} Get ${OCTOPOES_URI}/objects + ${params} Get Valid Time Params + ${response} Get ${OCTOPOES_URI}/objects params=${params} Should Be Equal As Integers ${response.status_code} 200 Should Be Equal ${response.headers["content-type"]} application/json ${response_data} Set Variable ${response.json()} @@ -158,12 +159,18 @@ Recalculate Scan Profiles Verify Object Present [Arguments] ${reference} - ${response} Get ${OCTOPOES_URI}/object params=reference=${reference} + ${params} Create Dictionary + ... reference=${reference} + ... valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/object params=${params} Should Be Equal As Integers ${response.status_code} 200 Verify Object Not Present [Arguments] ${reference} - ${response} Get ${OCTOPOES_URI}/object params=reference=${reference} expected_status=404 + ${params} Create Dictionary + ... reference=${reference} + ... valid_time=${VALID_TIME} + ${response} Get ${OCTOPOES_URI}/object params=${params} expected_status=404 Create XTDB node ${response} Post ${OCTOPOES_URI}/node diff --git a/octopoes/tests/test_api.py b/octopoes/tests/test_api.py index dfa177e9eff..0105f2451df 100644 --- a/octopoes/tests/test_api.py +++ b/octopoes/tests/test_api.py @@ -74,7 +74,7 @@ def test_openapi(): assert response.status_code == 200 -def test_get_scan_profiles(requests_mock, patch_pika): +def test_get_scan_profiles(requests_mock, patch_pika, valid_time): requests_mock.real_http = True scan_profile = { "type": "ScanProfile", @@ -88,7 +88,7 @@ def test_get_scan_profiles(requests_mock, patch_pika): json=[[scan_profile]], status_code=200, ) - response = client.get("/_dev/scan_profiles") + response = client.get("/_dev/scan_profiles", params={"valid_time": str(valid_time)}) assert response.status_code == 200 assert response.json() == [{"level": 0, "reference": "Hostname|internet|mispo.es", "scan_profile_type": "empty"}] @@ -115,7 +115,7 @@ def test_delete_node(requests_mock): assert response.status_code == 200 -def test_count_findings_by_severity(requests_mock, patch_pika, caplog): +def test_count_findings_by_severity(requests_mock, patch_pika, caplog, valid_time): logger = logging.getLogger("octopoes") logger.propagate = True @@ -147,7 +147,7 @@ def test_count_findings_by_severity(requests_mock, patch_pika, caplog): status_code=200, ) with caplog.at_level(logging.WARNING): - response = client.get("/_dev/findings/count_by_severity") + response = client.get("/_dev/findings/count_by_severity", params={"valid_time": str(valid_time)}) assert response.status_code == 200 assert response.json() == { "critical": 0, diff --git a/rocky/katalogus/views/plugin_detail.py b/rocky/katalogus/views/plugin_detail.py index e96bda0f238..d761534d984 100644 --- a/rocky/katalogus/views/plugin_detail.py +++ b/rocky/katalogus/views/plugin_detail.py @@ -1,4 +1,4 @@ -from datetime import datetime +from datetime import datetime, timezone from enum import Enum from logging import getLogger from typing import Any @@ -15,6 +15,7 @@ from tools.forms.ooi import SelectOOIFilterForm, SelectOOIForm from tools.view_helpers import reschedule_task +from katalogus.client import Boefje as KATalogusBoefje from katalogus.client import get_katalogus from katalogus.views.mixins import BoefjeMixin from katalogus.views.plugin_settings_list import PluginSettingsListView @@ -130,6 +131,7 @@ class BoefjeDetailView(BoefjeMixin, PluginDetailView): template_name = "boefje_detail.html" limit_ooi_list = 9999 + plugin: KATalogusBoefje def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -221,7 +223,9 @@ def post(self, request, *args, **kwargs): def get_form_consumable_oois(self): """Get all available OOIS that plugin can consume.""" - return self.octopoes_api_connector.list_objects(self.plugin.consumes, limit=self.limit_ooi_list).items + return self.octopoes_api_connector.list_objects( + self.plugin.consumes, valid_time=datetime.now(timezone.utc), limit=self.limit_ooi_list + ).items def get_form_filtered_consumable_oois(self): """Return a list of oois that is filtered for oois that meets clearance level.""" diff --git a/rocky/onboarding/views.py b/rocky/onboarding/views.py index cbd359c0496..f11d6608dc3 100644 --- a/rocky/onboarding/views.py +++ b/rocky/onboarding/views.py @@ -210,7 +210,7 @@ def get_hidden_form_fields(self): bytes_client = get_bytes_client(self.organization.code) for field_name, params in self.hidden_form_fields.items(): - ooi, created = get_or_create_ooi(self.octopoes_api_connector, bytes_client, params["ooi"]) + ooi, created = get_or_create_ooi(self.octopoes_api_connector, bytes_client, params["ooi"], self.observed_at) hidden_fields[field_name] = ooi.primary_key if created: diff --git a/rocky/reports/report_types/dns_report/report.py b/rocky/reports/report_types/dns_report/report.py index 5d0cd905603..6fbfbef699b 100644 --- a/rocky/reports/report_types/dns_report/report.py +++ b/rocky/reports/report_types/dns_report/report.py @@ -23,9 +23,7 @@ class DNSReport(Report): def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: ref = Reference.from_str(input_ooi) - tree = self.octopoes_api_connector.get_tree( - ref, depth=3, types={DNSRecord, Finding}, valid_time=valid_time - ).store + tree = self.octopoes_api_connector.get_tree(ref, valid_time, depth=3, types={DNSRecord, Finding}).store records = [] security = { diff --git a/rocky/reports/report_types/multi_organization_report/report.py b/rocky/reports/report_types/multi_organization_report/report.py index a0c6b5534e4..3f236eba780 100644 --- a/rocky/reports/report_types/multi_organization_report/report.py +++ b/rocky/reports/report_types/multi_organization_report/report.py @@ -1,3 +1,4 @@ +from datetime import datetime from logging import getLogger from typing import Any, TypedDict @@ -6,7 +7,7 @@ from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import Reference from octopoes.models.ooi.reports import ReportData -from reports.report_types.definitions import MultiReport +from reports.report_types.definitions import MultiReport, ReportPlugins logger = getLogger(__name__) @@ -25,7 +26,7 @@ class MultiOrganizationReport(MultiReport): id = "multi-organization-report" name = _("Multi Organization Report") description = _("Multi Organization Report") - plugins = {"required": [], "optional": []} + plugins: ReportPlugins = {"required": [], "optional": []} input_ooi_types = {ReportData} template_path = "multi_organization_report/report.html" @@ -255,9 +256,10 @@ def post_process_data(self, data: dict[str, Any]) -> dict[str, Any]: def collect_report_data( connector: OctopoesAPIConnector, input_ooi_references: list[str], + observed_at: datetime, ): report_data = {} for ooi in [x for x in input_ooi_references if Reference.from_str(x).class_type == ReportData]: - report_data[ooi] = connector.get(Reference.from_str(ooi)).dict() + report_data[ooi] = connector.get(Reference.from_str(ooi), observed_at).dict() return report_data diff --git a/rocky/reports/report_types/tls_report/report.py b/rocky/reports/report_types/tls_report/report.py index 30c9b4594ee..a2d06411f4c 100644 --- a/rocky/reports/report_types/tls_report/report.py +++ b/rocky/reports/report_types/tls_report/report.py @@ -29,7 +29,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, Any]: suites_with_findings = [] ref = Reference.from_str(input_ooi) tree = self.octopoes_api_connector.get_tree( - ref, depth=TREE_DEPTH, types={TLSCipher, Finding}, valid_time=valid_time + ref, valid_time=valid_time, depth=TREE_DEPTH, types={TLSCipher, Finding} ).store for pk, ooi in tree.items(): if ooi.ooi_type == "TLSCipher": diff --git a/rocky/reports/views/multi_report.py b/rocky/reports/views/multi_report.py index 142dae82da6..fb4ca763a24 100644 --- a/rocky/reports/views/multi_report.py +++ b/rocky/reports/views/multi_report.py @@ -126,7 +126,9 @@ class MultiReportView(BreadcrumbsMultiReportView, BaseReportView, TemplateView): def multi_reports_for_oois(self) -> dict[str, dict[str, Any]]: report = MultiOrganizationReport(self.octopoes_api_connector) - return report.post_process_data(collect_report_data(self.octopoes_api_connector, self.selected_oois)) + return report.post_process_data( + collect_report_data(self.octopoes_api_connector, self.selected_oois, self.observed_at) + ) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) diff --git a/rocky/rocky/views/finding_add.py b/rocky/rocky/views/finding_add.py index d374c0acbe5..e165fd50bb3 100644 --- a/rocky/rocky/views/finding_add.py +++ b/rocky/rocky/views/finding_add.py @@ -127,7 +127,7 @@ def form_valid(self, form): def get_ooi_options(self) -> list[tuple[str, str]]: # Query to render form options ooi_set = set(OOI_TYPES.values()).difference({Finding, FindingType}) - objects = self.octopoes_api_connector.list_objects(ooi_set).items + objects = self.octopoes_api_connector.list_objects(ooi_set, valid_time=datetime.now(timezone.utc)).items # generate options options = [(o.primary_key, o.get_ooi_type()) for o in objects] diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index 1d42e712421..6e6c41872f4 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -84,29 +84,21 @@ def observed_at(self) -> datetime: class OctopoesView(ObservedAtMixin, OrganizationView): - def get_single_ooi(self, pk: str, observed_at: datetime | None = None) -> OOI: + def get_single_ooi(self, pk: str) -> OOI: try: ref = Reference.from_str(pk) - return self.octopoes_api_connector.get(ref, valid_time=observed_at) + return self.octopoes_api_connector.get(ref, valid_time=self.observed_at) except Exception as e: # TODO: raise the exception but let the handling be done by the method that implements "get_single_ooi" self.handle_connector_exception(e) - def get_ooi_tree(self, pk: str, depth: int, observed_at: datetime | None = None) -> ReferenceTree: - try: - ref = Reference.from_str(pk) - return self.octopoes_api_connector.get_tree(ref, depth=depth, valid_time=observed_at) - except Exception as e: - self.handle_connector_exception(e) - def get_origins( self, reference: Reference, - valid_time: datetime | None, organization: Organization, ) -> tuple[list[OriginData], list[OriginData], list[OriginData]]: try: - origins = self.octopoes_api_connector.list_origins(valid_time, result=reference) + origins = self.octopoes_api_connector.list_origins(self.observed_at, result=reference) origin_data = [OriginData(origin=origin) for origin in origins] for origin in origin_data: @@ -139,15 +131,8 @@ def handle_connector_exception(self, exception: Exception): raise exception - def get_depth(self, default_depth=DEPTH_DEFAULT) -> int: - try: - depth = int(self.request.GET.get("depth", default_depth)) - return min(depth, DEPTH_MAX) - except ValueError: - return default_depth - def get_scan_profile_inheritance(self, ooi: OOI) -> list[InheritanceSection]: - return self.octopoes_api_connector.get_scan_profile_inheritance(ooi.reference) + return self.octopoes_api_connector.get_scan_profile_inheritance(ooi.reference, self.observed_at) class OOIList: @@ -232,9 +217,9 @@ def __init__( def count(self) -> int: return self.octopoes_connector.list_findings( severities=self.severities, + valid_time=self.valid_time, exclude_muted=self.exclude_muted, only_muted=self.only_muted, - valid_time=self.valid_time, limit=0, ).count @@ -249,9 +234,9 @@ def __getitem__(self, key: int | slice) -> list[HydratedFinding]: limit = key.stop - offset findings = self.octopoes_connector.list_findings( severities=self.severities, + valid_time=self.valid_time, exclude_muted=self.exclude_muted, only_muted=self.only_muted, - valid_time=self.valid_time, offset=offset, limit=limit, ).items @@ -291,7 +276,6 @@ def get_connector_form(self) -> ObservedAtForm: class SingleOOIMixin(OctopoesView): ooi: OOI - tree: ReferenceTree def get_ooi_id(self) -> str: if "ooi_id" not in self.request.GET: @@ -299,11 +283,11 @@ def get_ooi_id(self) -> str: return self.request.GET["ooi_id"] - def get_ooi(self, pk: str | None = None, observed_at: datetime | None = None) -> OOI: + def get_ooi(self, pk: str | None = None) -> OOI: if pk is None: pk = self.get_ooi_id() - return self.get_single_ooi(pk, observed_at) + return self.get_single_ooi(pk) def get_breadcrumb_list(self): start = { @@ -342,9 +326,11 @@ def get_ooi_properties(self, ooi: OOI): class SingleOOITreeMixin(SingleOOIMixin): tree: ReferenceTree - def setup(self, request, *args, **kwargs): - super().setup(request, *args, **kwargs) - self.depth = self.get_depth() + def get_depth(self): + try: + return min(int(self.request.GET.get("depth", DEPTH_DEFAULT)), DEPTH_MAX) + except ValueError: + return DEPTH_DEFAULT def get_ooi(self, pk: str | None = None, observed_at: datetime | None = None) -> OOI: if pk is None: @@ -353,10 +339,14 @@ def get_ooi(self, pk: str | None = None, observed_at: datetime | None = None) -> if observed_at is None: observed_at = self.observed_at - return self.get_object_from_tree(pk, observed_at) + ref = Reference.from_str(pk) + depth = self.get_depth() + + try: + self.tree = self.octopoes_api_connector.get_tree(ref, valid_time=observed_at, depth=depth) + except Exception as e: + self.handle_connector_exception(e) - def get_object_from_tree(self, pk: str, observed_at: datetime | None = None) -> OOI: - self.tree = self.get_ooi_tree(pk, self.depth, observed_at) return self.tree.store[str(self.tree.root.reference)] diff --git a/rocky/rocky/views/ooi_delete.py b/rocky/rocky/views/ooi_delete.py index f28598f425d..10ef6b8dad2 100644 --- a/rocky/rocky/views/ooi_delete.py +++ b/rocky/rocky/views/ooi_delete.py @@ -1,3 +1,5 @@ +from datetime import datetime, timezone + from account.mixins import OrganizationPermissionRequiredMixin from django.http import HttpResponseRedirect from django.urls import reverse_lazy @@ -17,7 +19,7 @@ def setup(self, request, *args, **kwargs): self.ooi = self.get_ooi() def delete(self, request): - self.octopoes_api_connector.delete(self.ooi.reference) + self.octopoes_api_connector.delete(self.ooi.reference, valid_time=datetime.now(timezone.utc)) return HttpResponseRedirect(self.get_success_url()) # Add support for browsers which only accept GET and POST for now. diff --git a/rocky/rocky/views/ooi_detail.py b/rocky/rocky/views/ooi_detail.py index 22db79a3113..e0b7d2be836 100644 --- a/rocky/rocky/views/ooi_detail.py +++ b/rocky/rocky/views/ooi_detail.py @@ -161,12 +161,11 @@ def get_context_data(self, **kwargs): context["boefjes"] = [boefje for boefje in boefjes if boefje.scan_level.value <= max_level] context["ooi"] = self.ooi - declarations, observations, inferences = self.get_origins( - self.ooi.reference, self.observed_at, self.organization - ) + declarations, observations, inferences = self.get_origins(self.ooi.reference, self.organization) inference_params = self.octopoes_api_connector.list_origin_parameters( - {inference.origin.id for inference in inferences} + {inference.origin.id for inference in inferences}, + self.observed_at, ) inference_params_per_inference = defaultdict(list) for inference_param in inference_params: diff --git a/rocky/rocky/views/ooi_mute.py b/rocky/rocky/views/ooi_mute.py index 4fe539f0357..7fe6ce95b46 100644 --- a/rocky/rocky/views/ooi_mute.py +++ b/rocky/rocky/views/ooi_mute.py @@ -1,3 +1,5 @@ +from datetime import datetime, timezone + from account.mixins import OrganizationPermissionRequiredMixin from django.contrib import messages from django.shortcuts import redirect @@ -46,14 +48,14 @@ def post(self, request, *args, **kwargs): return redirect(reverse("finding_list", kwargs={"organization_code": self.organization.code})) if unmute: mutes_finding_refs = [MutedFinding(finding=finding) for finding in selected_findings] - self.octopoes_api_connector.delete_many(mutes_finding_refs) + self.octopoes_api_connector.delete_many(mutes_finding_refs, datetime.now(timezone.utc)) messages.add_message(self.request, messages.SUCCESS, _("Finding(s) successfully unmuted.")) return redirect(reverse("finding_list", kwargs={"organization_code": self.organization.code})) else: for finding in selected_findings: ooi = self.ooi_class.parse_obj({"finding": finding, "reason": reason}) - create_ooi(self.octopoes_api_connector, self.bytes_client, ooi) + create_ooi(self.octopoes_api_connector, self.bytes_client, ooi, datetime.now(timezone.utc)) messages.add_message(self.request, messages.SUCCESS, _("Finding(s) successfully muted.")) return redirect(reverse("finding_list", kwargs={"organization_code": self.organization.code})) diff --git a/rocky/rocky/views/ooi_report.py b/rocky/rocky/views/ooi_report.py index e3fa966d1eb..9496d17bc76 100644 --- a/rocky/rocky/views/ooi_report.py +++ b/rocky/rocky/views/ooi_report.py @@ -79,7 +79,7 @@ def get(self, request, *args, **kwargs): self.organization.code, valid_time.date(), ooi, - self.depth, + self.get_depth(), origin=f"{request.scheme}://{request.get_host()}", ), ) diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index cd24cb66356..4bb09a83a64 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from time import sleep from typing import Any @@ -169,7 +170,7 @@ def form_valid(self, form): # Transform into OOI try: new_ooi = self.ooi_class.parse_obj(form.cleaned_data) - create_ooi(self.octopoes_api_connector, self.bytes_client, new_ooi) + create_ooi(self.octopoes_api_connector, self.bytes_client, new_ooi, datetime.now(timezone.utc)) sleep(1) return redirect(self.get_ooi_success_url(new_ooi)) except ValidationError as exception: diff --git a/rocky/tests/integration/test_reports.py b/rocky/tests/integration/test_reports.py index 0d5741e12dc..a0f115701d2 100644 --- a/rocky/tests/integration/test_reports.py +++ b/rocky/tests/integration/test_reports.py @@ -265,7 +265,9 @@ def test_multi_report( multi_report = MultiOrganizationReport(octopoes_api_connector) multi_report_data = collect_report_data( - octopoes_api_connector, [str(report_data_object.reference), str(report_data_object_2.reference)] + octopoes_api_connector, + [str(report_data_object.reference), str(report_data_object_2.reference)], + valid_time, ) multi_data = multi_report.post_process_data(multi_report_data) assert multi_data["organizations"] == [octopoes_api_connector.client, octopoes_api_connector_2.client] diff --git a/rocky/tools/forms/finding_type.py b/rocky/tools/forms/finding_type.py index ea40f57e931..ee06c19c281 100644 --- a/rocky/tools/forms/finding_type.py +++ b/rocky/tools/forms/finding_type.py @@ -1,4 +1,4 @@ -import datetime +from datetime import datetime, timezone from django import forms from django.core.exceptions import ValidationError @@ -133,7 +133,7 @@ class FindingAddForm(BaseRockyForm): date = forms.DateTimeField( label=_("Date/Time (UTC)"), widget=DateTimeInput(format="%Y-%m-%dT%H:%M"), - initial=lambda: datetime.datetime.now(tz=datetime.timezone.utc), + initial=lambda: datetime.now(tz=timezone.utc), help_text=FINDING_DATETIME_HELP_TEXT, ) @@ -152,7 +152,7 @@ def clean_date(self): data = self.cleaned_data["date"] # date should not be in the future - if data > datetime.datetime.now(tz=datetime.timezone.utc): + if data > datetime.now(tz=timezone.utc): raise ValidationError(_("Doc! I'm from the future, I'm here to take you back!")) return data @@ -160,7 +160,7 @@ def clean_date(self): def clean_ooi_id(self): try: data = self.cleaned_data["ooi_id"] - self.octopoes_connector.get(Reference.from_str(data)) + self.octopoes_connector.get(Reference.from_str(data), datetime.now(timezone.utc)) return data except ObjectNotFoundException: raise ValidationError(_("OOI doesn't exist")) diff --git a/rocky/tools/forms/ooi_form.py b/rocky/tools/forms/ooi_form.py index f4831fe4ca9..864842e7687 100644 --- a/rocky/tools/forms/ooi_form.py +++ b/rocky/tools/forms/ooi_form.py @@ -1,3 +1,4 @@ +from datetime import datetime, timezone from enum import Enum from inspect import isclass from ipaddress import IPv4Address, IPv6Address @@ -104,7 +105,7 @@ def generate_select_ooi_field( if initial: select_options.append((initial, initial)) - oois = api_connector.list_objects({related_ooi_type}).items + oois = api_connector.list_objects({related_ooi_type}, datetime.now(timezone.utc)).items select_options.extend([(ooi.primary_key, ooi.primary_key) for ooi in oois]) if is_multiselect: diff --git a/rocky/tools/ooi_helpers.py b/rocky/tools/ooi_helpers.py index 9c47689438c..7d2c6238254 100644 --- a/rocky/tools/ooi_helpers.py +++ b/rocky/tools/ooi_helpers.py @@ -1,4 +1,4 @@ -from datetime import datetime, timezone +from datetime import datetime from enum import Enum from typing import Any from uuid import uuid4 @@ -237,29 +237,16 @@ def get_finding_type_from_finding(finding: Finding) -> FindingType: def get_or_create_ooi( - api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime | None = None -) -> tuple[OOI, bool | datetime]: - _now = datetime.now(timezone.utc) - if observed_at is None: - observed_at = _now - + api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime +) -> tuple[OOI, bool]: try: return api_connector.get(ooi.reference, observed_at), False except ObjectNotFoundException: - if observed_at < _now: - # don't create an OOI when expected observed_at is in the past - raise ValueError(f"OOI not found and unable to create at {observed_at}") - create_ooi(api_connector, bytes_client, ooi, observed_at) - return ooi, datetime.now(timezone.utc) - + return ooi, True -def create_ooi( - api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime | None = None -) -> None: - if observed_at is None: - observed_at = datetime.now(timezone.utc) +def create_ooi(api_connector: OctopoesAPIConnector, bytes_client: BytesClient, ooi: OOI, observed_at: datetime) -> None: task_id = uuid4() declaration = Declaration(ooi=ooi, valid_time=observed_at, task_id=str(task_id)) bytes_client.add_manual_proof(task_id, BytesClient.raw_from_declarations([declaration])) From 9e6fcc37acb9d15b473db626c66aa730bf0c8662 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Thu, 22 Feb 2024 20:59:23 +0100 Subject: [PATCH 67/85] Remove unnecessary toplevel dependencies (#2554) Co-authored-by: Jan Klopper --- boefjes/poetry.lock | 24 ++++++- boefjes/pyproject.toml | 9 +-- boefjes/requirements-dev.txt | 24 ++++++- boefjes/requirements.txt | 30 ++++++-- bytes/poetry.lock | 37 ++++++---- bytes/pyproject.toml | 31 +------- bytes/requirements-dev.txt | 30 ++++++-- bytes/requirements.txt | 29 ++++++-- octopoes/poetry.lock | 3 +- octopoes/pyproject.toml | 2 - octopoes/requirements-dev.txt | 3 +- octopoes/requirements.txt | 3 +- rocky/poetry.lock | 130 +--------------------------------- rocky/pyproject.toml | 23 +----- rocky/requirements-dev.txt | 97 ------------------------- rocky/requirements.txt | 99 +------------------------- 16 files changed, 154 insertions(+), 420 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 07f742a2540..6679a22b45a 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -2228,6 +2228,7 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -2449,30 +2450,51 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -2849,4 +2871,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "b7694182a95c5261367ba0f1cc8ebbe4eb8cf3d3974aa8d782eb7f95dde51fd2" +content-hash = "80991f0f897c1c062b6b84c367e335ce1b7ae0842d8d202b7f165308c1d2b246" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index e644b10c1ea..780230bdb79 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -9,7 +9,6 @@ license = "EUPL" python = "^3.10" alembic = "^1.8.1" click = "^8.1.3" -httpx = "^0.26.0" jsonschema = "^4.17.0" pydantic = "^2.4.2" docker = "^6.1.3" @@ -19,12 +18,13 @@ psycopg2 = "^2.9.6" pynacl = "^1.5.0" sqlalchemy = "^1.4.48" python-dateutil = "^2.8.2" -tldextract = "^3.4.4" +pydantic-settings = "^2.0.3" opentelemetry-sdk = "^1.19.0" opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" opentelemetry-instrumentation-fastapi = "^0.41b0" opentelemetry-instrumentation-psycopg2 = "^0.41b0" opentelemetry-instrumentation-requests = "^0.41b0" +opentelemetry-instrumentation = "^0.41b0" # required by kat_snyk, kat_crt_sh, kat_crt_sh boefjes requests = "^2.31.0" # required by kat_binaryedge boefje @@ -37,6 +37,8 @@ censys = "2.1.8" pynetdicom = "2.0.2" # required by kat_dns, kat_dns_zone boefjes dnspython = "2.1.0" +# required by kat_fierce +tldextract = "^3.4.4" # required by kat_log4shell boefje, kat_webpage_analysis/find_images_in_html normalizer validators = "0.20.0" # required by kat_nmap boefje @@ -59,14 +61,13 @@ sectxt = "0.9.0" netaddr = "0.9.0" # required by kat_burpsuite, kat_cwe_finding_types and kat_ssl_scan defusedxml = "^0.7.1" -pydantic-settings = "^2.0.3" -opentelemetry-instrumentation = "^0.41b0" # required by kat_webpage_analysis/check_images normalizer pillow = "^10.2.0" [tool.poetry.group.dev.dependencies] pytest = "^8.0.0" pytest-env = "^1.1.3" +httpx = "^0.26.0" [build-system] requires = ["setuptools>=45", "wheel"] diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 244ef1dec57..d80f57f7ba0 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -1089,7 +1089,8 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1214,9 +1215,12 @@ soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1224,20 +1228,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index ab46041801f..dbce2973e37 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -528,14 +528,8 @@ grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ h11==0.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d \ --hash=sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761 -httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ - --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 httpretty==1.1.4 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:20de0e5dd5a18292d36d928cc3d6e52f8b2ac73daec40d41eb62dee154933b68 -httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ - --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -1077,7 +1071,8 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1202,9 +1197,12 @@ soupsieve==2.5 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1212,20 +1210,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 637574cca0c..63ddcce8090 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -1333,20 +1333,6 @@ cffi = ">=1.4.1" docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] -[[package]] -name = "pyparsing" -version = "3.1.1" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -optional = false -python-versions = ">=3.6.8" -files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, -] - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - [[package]] name = "pytest" version = "8.0.1" @@ -1549,30 +1535,51 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -1772,4 +1779,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "f8bb766f3f0631a32e209db60cb021fb022191997b624b07e97db609d050831f" +content-hash = "ca17af23a91757be7606a7df362d9135e47d5aaa3a098e118fa4fb553c763d4b" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index a03af34ca88..a20d7ebbf97 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -8,42 +8,19 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.10" alembic = "^1.8.1" -anyio = "^4.2.0" -asgiref = "^3.5.2" -bcrypt = "^4.0.1" cachetools = "^5.3.1" -cffi = "^1.15.1" -charset-normalizer = "^3.1.0" -click = "^8.1.3" -cryptography = "^42.0.1" -ecdsa = "^0.18.0" fastapi = "^0.109.1" -greenlet = "^2.0.1" -h11 = "^0.13.0" -idna = "^3.4" -importlib-metadata = "^6.0.1" -mako = "^1.2.4" -markupsafe = "^2.1.3" passlib = { version = "^1.7.4", extras = ["bcrypt"] } pika = "^1.3.1" prometheus-client = "^0.16.0" psycopg2 = "^2.9.6" -pyasn1 = "^0.4.8" -pycparser = "^2.21" pydantic = "^2.6.1" pynacl = "^1.5.0" -python-dotenv = "^1.0.0" python-jose = { version = "^3.3.0", extras = ["cryptography"] } requests = "^2.31.0" rfc3161ng = "^2.1.3" -rsa = "^4.9" -six = "^1.16.0" -sniffio = "^1.3.0" sqlalchemy = "^1.4.48" -urllib3 = "^2.0.3" uvicorn = "^0.26.0" -zipp = "^3.8.1" -httpx = "^0.26.0" # OpenTelemetry opentelemetry-sdk = "^1.19.0" @@ -57,15 +34,9 @@ pydantic-settings = "^2.0.3" python-multipart = "^0.0.9" [tool.poetry.group.dev.dependencies] -iniconfig = "^2.0.0" -packaging = "^23.0" -pluggy = "^1.0.0" -pyparsing = "^3.0.9" pytest = "^8.0.0" -setuptools = "^68.0.0" -tomli = "^2.0.1" -wrapt = "^1.14.1" pytest-env = "^1.1.3" +httpx = "^0.26.0" [build-system] requires = ["setuptools>=65", "wheel"] diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index 765f2f772ad..d0d47300995 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -194,7 +194,7 @@ charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (platform_system == "Windows" or sys_platform == "win32") \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows") \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 cryptography==42.0.4 ; python_version >= "3.10" and python_version < "4.0" \ @@ -245,7 +245,7 @@ fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ +greenlet==2.0.2 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ @@ -633,9 +633,6 @@ pynacl==1.5.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394 \ --hash=sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b \ --hash=sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543 -pyparsing==3.1.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ - --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db pytest-env==1.1.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:aada77e6d09fcfb04540a6e462c58533c37df35fa853da78707b17ec04d17dfc \ --hash=sha256:fcd7dc23bb71efd3d35632bde1bbe5ee8c8dc4489d6617fb010674880d96216b @@ -673,9 +670,12 @@ sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -683,25 +683,43 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ --hash=sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080 -tomli==2.0.1 ; python_version >= "3.10" and python_version < "4.0" \ +tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11" \ --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f typing-extensions==4.9.0 ; python_version >= "3.10" and python_version < "4.0" \ diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 589bf34291b..306b6005cce 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -245,7 +245,7 @@ fastapi==0.109.2 ; python_version >= "3.10" and python_version < "4.0" \ googleapis-common-protos==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -greenlet==2.0.2 ; python_version >= "3.10" and python_version < "4.0" \ +greenlet==2.0.2 ; python_version >= "3.10" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version < "4.0" \ --hash=sha256:03a8f4f3430c3b3ff8d10a2a86028c660355ab637cee9333d63d66b56f09d52a \ --hash=sha256:0bf60faf0bc2468089bdc5edd10555bab6e85152191df713e2ab1fcc86382b5a \ --hash=sha256:1087300cf9700bbf455b1b97e24db18f2f77b55302a68272c56209d5587c12d1 \ @@ -368,12 +368,6 @@ grpcio==1.62.0 ; python_version >= "3.10" and python_version < "4.0" \ h11==0.13.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:70813c1135087a248a4d38cc0e1a0181ffab2188141a93eaf567940c3957ff06 \ --hash=sha256:8ddd78563b633ca55346c8cd41ec0af27d3c79931828beffb46ce70a379e7442 -httpcore==1.0.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73 \ - --hash=sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022 -httpx==0.26.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf \ - --hash=sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd idna==3.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca \ --hash=sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f @@ -655,9 +649,12 @@ sniffio==1.3.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -665,20 +662,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.36.3 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044 \ diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index a8bf9b97b9e..4d71cd100f3 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -1523,6 +1523,7 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -2095,4 +2096,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "78465faa001ff609a18955f9117fd7a2cafcf517ba198ad7aad53807a1d71f10" +content-hash = "d1eef39a42fd28c1ff88bf43ce3d0b756da09a90be6a7a857218f7cd9be4b35f" diff --git a/octopoes/pyproject.toml b/octopoes/pyproject.toml index 3a48c68d86b..e5e87c5c9bf 100644 --- a/octopoes/pyproject.toml +++ b/octopoes/pyproject.toml @@ -17,7 +17,6 @@ fastapi = "^0.109.1" uvicorn = "^0.26.0" pika = "^1.3.1" PyYAML = "^6.0" -setuptools = "^67.2.0" dnspython = "^2.2.1" kombu = "^5.2.4" celery = "^5.2.7" @@ -28,7 +27,6 @@ opentelemetry-sdk = "^1.19.0" opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" opentelemetry-instrumentation-fastapi = "^0.41b0" opentelemetry-instrumentation-requests = "^0.41b0" -certifi = "^2023.7.22" sqlalchemy = "1.4.48" jsonschema = "^4.18.0" opentelemetry-instrumentation = "^0.41b0" diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index 7c19374f1f2..2a75bd88c02 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -580,7 +580,8 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests-mock==1.11.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4 \ --hash=sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15 diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index 651f4953bb0..eafb126f3d6 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -491,7 +491,8 @@ referencing==0.33.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 diff --git a/rocky/poetry.lock b/rocky/poetry.lock index 302cccdad1e..be368d78fa6 100644 --- a/rocky/poetry.lock +++ b/rocky/poetry.lock @@ -823,26 +823,6 @@ regex = ">=2023.0.0,<2024.0.0" tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} tqdm = ">=4.62.2,<5.0.0" -[[package]] -name = "dnspython" -version = "2.6.1" -description = "DNS toolkit" -optional = false -python-versions = ">=3.8" -files = [ - {file = "dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50"}, - {file = "dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc"}, -] - -[package.extras] -dev = ["black (>=23.1.0)", "coverage (>=7.0)", "flake8 (>=7)", "mypy (>=1.8)", "pylint (>=3)", "pytest (>=7.4)", "pytest-cov (>=4.1.0)", "sphinx (>=7.2.0)", "twine (>=4.0.0)", "wheel (>=0.42.0)"] -dnssec = ["cryptography (>=41)"] -doh = ["h2 (>=4.1.0)", "httpcore (>=1.0.0)", "httpx (>=0.26.0)"] -doq = ["aioquic (>=0.9.25)"] -idna = ["idna (>=3.6)"] -trio = ["trio (>=0.23)"] -wmi = ["wmi (>=1.5.1)"] - [[package]] name = "drf-standardized-errors" version = "0.12.6" @@ -1422,114 +1402,6 @@ files = [ {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, ] -[[package]] -name = "lxml" -version = "4.9.4" -description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" -files = [ - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722"}, - {file = "lxml-4.9.4-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1"}, - {file = "lxml-4.9.4-cp27-cp27m-win32.whl", hash = "sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013"}, - {file = "lxml-4.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2"}, - {file = "lxml-4.9.4-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48"}, - {file = "lxml-4.9.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307"}, - {file = "lxml-4.9.4-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868"}, - {file = "lxml-4.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7"}, - {file = "lxml-4.9.4-cp310-cp310-win32.whl", hash = "sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be"}, - {file = "lxml-4.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5"}, - {file = "lxml-4.9.4-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a"}, - {file = "lxml-4.9.4-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac"}, - {file = "lxml-4.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622"}, - {file = "lxml-4.9.4-cp311-cp311-win32.whl", hash = "sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3"}, - {file = "lxml-4.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8"}, - {file = "lxml-4.9.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229"}, - {file = "lxml-4.9.4-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20"}, - {file = "lxml-4.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10"}, - {file = "lxml-4.9.4-cp312-cp312-win32.whl", hash = "sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b"}, - {file = "lxml-4.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20"}, - {file = "lxml-4.9.4-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66"}, - {file = "lxml-4.9.4-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7"}, - {file = "lxml-4.9.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23"}, - {file = "lxml-4.9.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745"}, - {file = "lxml-4.9.4-cp36-cp36m-win32.whl", hash = "sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be"}, - {file = "lxml-4.9.4-cp36-cp36m-win_amd64.whl", hash = "sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964"}, - {file = "lxml-4.9.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d"}, - {file = "lxml-4.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02"}, - {file = "lxml-4.9.4-cp37-cp37m-win32.whl", hash = "sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e"}, - {file = "lxml-4.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc"}, - {file = "lxml-4.9.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37"}, - {file = "lxml-4.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9"}, - {file = "lxml-4.9.4-cp38-cp38-win32.whl", hash = "sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c"}, - {file = "lxml-4.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46"}, - {file = "lxml-4.9.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382"}, - {file = "lxml-4.9.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847"}, - {file = "lxml-4.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab"}, - {file = "lxml-4.9.4-cp39-cp39-win32.whl", hash = "sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec"}, - {file = "lxml-4.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-macosx_11_0_x86_64.whl", hash = "sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4"}, - {file = "lxml-4.9.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba"}, - {file = "lxml-4.9.4-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58"}, - {file = "lxml-4.9.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd"}, - {file = "lxml-4.9.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137"}, - {file = "lxml-4.9.4.tar.gz", hash = "sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e"}, -] - -[package.extras] -cssselect = ["cssselect (>=0.7)"] -html5 = ["html5lib"] -htmlsoup = ["BeautifulSoup4"] -source = ["Cython (==0.29.37)"] - [[package]] name = "markdown-it-py" version = "3.0.0" @@ -3565,4 +3437,4 @@ test = ["pytest"] [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "c76491504011cc0b4f1ad75b0d0c7782472a100221fc969f3f2f54df405b5519" +content-hash = "1b79692a4b3201987f9336c924d04fb4e96323fcc219bcab444ebf2a982eee21" diff --git a/rocky/pyproject.toml b/rocky/pyproject.toml index e4c658aafbb..dd444beb819 100644 --- a/rocky/pyproject.toml +++ b/rocky/pyproject.toml @@ -7,31 +7,17 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.10" -asgiref = "^3.6.0" beautifulsoup4 = "^4.11.2" Django = "^4.2.7" -django-formtools = "^2.4.1" -django-otp = "^1.1.3" -django-phonenumber-field = "^6.1.0" django-two-factor-auth = "^1.14.0" django-environ = "^0.11.2" -idna = "^3.4" jsonschema = "^4.17.0" -lxml = "^4.9.2" phonenumbers = "^8.12.57" psycopg2 = "^2.9.6" pydantic = "^2.4.2" python-dotenv = "^1.0.0" -qrcode = "^7.3.1" requests = "^2.31.0" -six = "^1.16.0" -soupsieve = "^2.3.2.post1" -sqlparse = "^0.4.4" -typing-extensions = "^4.4.0" -urllib3 = "^2.0.3" -dnspython = "^2.1.0" django-password-validators = "^1.7.1" -colorama = "^0.4.6" django-csp = "^3.7" djangorestframework = "^3.14.0" django-tagulous = "^1.3.3" @@ -41,8 +27,6 @@ django-weasyprint = "^2.2.1" strenum = "^0.4.15" django-rest-knox = { git = "https://github.com/jazzband/django-rest-knox", rev = "dd7b062147bc4b9718e22d5acd6cf1301a1036b9" } -# temp fix to pass build, remove later when https://github.com/xhtml2pdf/xhtml2pdf/issues/589 is solved - # OpenTelemetry opentelemetry-sdk = "^1.19.0" opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" @@ -53,8 +37,10 @@ whitenoise = {extras = ["brotli"], version = "^6.5.0"} opentelemetry-instrumentation = "^0.41b0" opentelemetry-instrumentation-fastapi = "^0.41b0" granian = "^1.0.2" -pydantic-settings = "^2.0.3" + +# These used in octopoes parts that are used by rocky pyparsing = "^3.1.1" +pydantic-settings = "^2.0.3" [tool.poetry.group.dev.dependencies] @@ -76,9 +62,6 @@ pytest-mock = "^3.11.1" model-mommy = "^2.0.0" factory-boy = "^3.2.1" -# NOTE: pip does not yet support hash verification for git dependencies; -# rocky's requirements-dev.txt unfortunately has no hashing until then -# f6eb4cbb9112b5aa933313d79e4da823adb41e1e -> Remove pip import in setup.py django-admin-auto-tests = { git = "https://github.com/dekkers/django-admin-auto-tests", rev = "f6eb4cbb9112b5aa933313d79e4da823adb41e1e" } [build-system] diff --git a/rocky/requirements-dev.txt b/rocky/requirements-dev.txt index 61a15cff0cf..680807b9cba 100644 --- a/rocky/requirements-dev.txt +++ b/rocky/requirements-dev.txt @@ -384,9 +384,6 @@ djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0 djlint==1.34.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:96ff1c464fb6f061130ebc88663a2ea524d7ec51f4b56221a2b3f0320a3cfce8 \ --hash=sha256:db93fa008d19eaadb0454edf1704931d14469d48508daba2df9941111f408346 -dnspython==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \ - --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d @@ -669,100 +666,6 @@ lazy-object-proxy==1.10.0 ; python_version >= "3.10" and python_version < "4.0" --hash=sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba \ --hash=sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03 \ --hash=sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c -lxml==4.9.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ - --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ - --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ - --hash=sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5 \ - --hash=sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545 \ - --hash=sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2 \ - --hash=sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd \ - --hash=sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a \ - --hash=sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771 \ - --hash=sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba \ - --hash=sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20 \ - --hash=sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b \ - --hash=sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac \ - --hash=sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7 \ - --hash=sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be \ - --hash=sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28 \ - --hash=sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9 \ - --hash=sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622 \ - --hash=sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43 \ - --hash=sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197 \ - --hash=sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20 \ - --hash=sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2 \ - --hash=sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97 \ - --hash=sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48 \ - --hash=sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d \ - --hash=sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d \ - --hash=sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7 \ - --hash=sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d \ - --hash=sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca \ - --hash=sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc \ - --hash=sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4 \ - --hash=sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225 \ - --hash=sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663 \ - --hash=sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2 \ - --hash=sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590 \ - --hash=sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c \ - --hash=sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46 \ - --hash=sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58 \ - --hash=sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16 \ - --hash=sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013 \ - --hash=sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c \ - --hash=sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02 \ - --hash=sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec \ - --hash=sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3 \ - --hash=sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573 \ - --hash=sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899 \ - --hash=sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10 \ - --hash=sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2 \ - --hash=sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a \ - --hash=sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37 \ - --hash=sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5 \ - --hash=sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745 \ - --hash=sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9 \ - --hash=sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7 \ - --hash=sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868 \ - --hash=sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c \ - --hash=sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b \ - --hash=sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45 \ - --hash=sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd \ - --hash=sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644 \ - --hash=sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4 \ - --hash=sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e \ - --hash=sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192 \ - --hash=sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be \ - --hash=sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab \ - --hash=sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d \ - --hash=sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85 \ - --hash=sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9 \ - --hash=sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307 \ - --hash=sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd \ - --hash=sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e \ - --hash=sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8 \ - --hash=sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964 \ - --hash=sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69 \ - --hash=sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683 \ - --hash=sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5 \ - --hash=sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979 \ - --hash=sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8 \ - --hash=sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e \ - --hash=sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53 \ - --hash=sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7 \ - --hash=sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722 \ - --hash=sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d \ - --hash=sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66 \ - --hash=sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1 \ - --hash=sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137 \ - --hash=sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56 \ - --hash=sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a \ - --hash=sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0 \ - --hash=sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23 \ - --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ - --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ - --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \ --hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb diff --git a/rocky/requirements.txt b/rocky/requirements.txt index 9acece0a8c9..b9d26f6882a 100644 --- a/rocky/requirements.txt +++ b/rocky/requirements.txt @@ -275,7 +275,7 @@ charset-normalizer==3.3.2 ; python_version >= "3.10" and python_version < "4.0" click==8.1.7 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de -colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" \ +colorama==0.4.6 ; python_version >= "3.10" and python_version < "4.0" and platform_system == "Windows" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 cssselect2==0.7.0 ; python_version >= "3.10" and python_version < "4.0" \ @@ -322,9 +322,6 @@ django==4.2.10 ; python_version >= "3.10" and python_version < "4.0" \ djangorestframework==3.14.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:579a333e6256b09489cbe0a067e66abe55c6595d8926be6b99423786334350c8 \ --hash=sha256:eb63f58c9f218e1a7d064d17a70751f528ed4e1d35547fdade9aaf4cd103fd08 -dnspython==2.6.1 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50 \ - --hash=sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc drf-standardized-errors==0.12.6 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:6f71d895427a5c4658c7c653ebd3755840514e0cc6a433e484808ad5191b22ee \ --hash=sha256:f71d5fce12bca8d1ce41cc65024014efbddb35c6b51a193db9a938b57385100d @@ -493,100 +490,6 @@ jsonschema-specifications==2023.12.1 ; python_version >= "3.10" and python_versi jsonschema==4.21.1 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f \ --hash=sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5 -lxml==4.9.4 ; python_version >= "3.10" and python_version < "4.0" \ - --hash=sha256:00e91573183ad273e242db5585b52670eddf92bacad095ce25c1e682da14ed91 \ - --hash=sha256:01bf1df1db327e748dcb152d17389cf6d0a8c5d533ef9bab781e9d5037619229 \ - --hash=sha256:056a17eaaf3da87a05523472ae84246f87ac2f29a53306466c22e60282e54ff8 \ - --hash=sha256:0a08c89b23117049ba171bf51d2f9c5f3abf507d65d016d6e0fa2f37e18c0fc5 \ - --hash=sha256:1343df4e2e6e51182aad12162b23b0a4b3fd77f17527a78c53f0f23573663545 \ - --hash=sha256:1449f9451cd53e0fd0a7ec2ff5ede4686add13ac7a7bfa6988ff6d75cff3ebe2 \ - --hash=sha256:16b9ec51cc2feab009e800f2c6327338d6ee4e752c76e95a35c4465e80390ccd \ - --hash=sha256:1f10f250430a4caf84115b1e0f23f3615566ca2369d1962f82bef40dd99cd81a \ - --hash=sha256:231142459d32779b209aa4b4d460b175cadd604fed856f25c1571a9d78114771 \ - --hash=sha256:232fd30903d3123be4c435fb5159938c6225ee8607b635a4d3fca847003134ba \ - --hash=sha256:23d891e5bdc12e2e506e7d225d6aa929e0a0368c9916c1fddefab88166e98b20 \ - --hash=sha256:266f655d1baff9c47b52f529b5f6bec33f66042f65f7c56adde3fcf2ed62ae8b \ - --hash=sha256:273473d34462ae6e97c0f4e517bd1bf9588aa67a1d47d93f760a1282640e24ac \ - --hash=sha256:2bd9ac6e44f2db368ef8986f3989a4cad3de4cd55dbdda536e253000c801bcc7 \ - --hash=sha256:33714fcf5af4ff7e70a49731a7cc8fd9ce910b9ac194f66eaa18c3cc0a4c02be \ - --hash=sha256:359a8b09d712df27849e0bcb62c6a3404e780b274b0b7e4c39a88826d1926c28 \ - --hash=sha256:365005e8b0718ea6d64b374423e870648ab47c3a905356ab6e5a5ff03962b9a9 \ - --hash=sha256:389d2b2e543b27962990ab529ac6720c3dded588cc6d0f6557eec153305a3622 \ - --hash=sha256:3b505f2bbff50d261176e67be24e8909e54b5d9d08b12d4946344066d66b3e43 \ - --hash=sha256:3d74d4a3c4b8f7a1f676cedf8e84bcc57705a6d7925e6daef7a1e54ae543a197 \ - --hash=sha256:3f3f00a9061605725df1816f5713d10cd94636347ed651abdbc75828df302b20 \ - --hash=sha256:43498ea734ccdfb92e1886dfedaebeb81178a241d39a79d5351ba2b671bff2b2 \ - --hash=sha256:4855161013dfb2b762e02b3f4d4a21cc7c6aec13c69e3bffbf5022b3e708dd97 \ - --hash=sha256:4d973729ce04784906a19108054e1fd476bc85279a403ea1a72fdb051c76fa48 \ - --hash=sha256:4ece9cca4cd1c8ba889bfa67eae7f21d0d1a2e715b4d5045395113361e8c533d \ - --hash=sha256:506becdf2ecaebaf7f7995f776394fcc8bd8a78022772de66677c84fb02dd33d \ - --hash=sha256:520486f27f1d4ce9654154b4494cf9307b495527f3a2908ad4cb48e4f7ed7ef7 \ - --hash=sha256:5557461f83bb7cc718bc9ee1f7156d50e31747e5b38d79cf40f79ab1447afd2d \ - --hash=sha256:562778586949be7e0d7435fcb24aca4810913771f845d99145a6cee64d5b67ca \ - --hash=sha256:59bb5979f9941c61e907ee571732219fa4774d5a18f3fa5ff2df963f5dfaa6bc \ - --hash=sha256:606d445feeb0856c2b424405236a01c71af7c97e5fe42fbc778634faef2b47e4 \ - --hash=sha256:6197c3f3c0b960ad033b9b7d611db11285bb461fc6b802c1dd50d04ad715c225 \ - --hash=sha256:647459b23594f370c1c01768edaa0ba0959afc39caeeb793b43158bb9bb6a663 \ - --hash=sha256:647bfe88b1997d7ae8d45dabc7c868d8cb0c8412a6e730a7651050b8c7289cf2 \ - --hash=sha256:6bee9c2e501d835f91460b2c904bc359f8433e96799f5c2ff20feebd9bb1e590 \ - --hash=sha256:6dbdacf5752fbd78ccdb434698230c4f0f95df7dd956d5f205b5ed6911a1367c \ - --hash=sha256:701847a7aaefef121c5c0d855b2affa5f9bd45196ef00266724a80e439220e46 \ - --hash=sha256:786d6b57026e7e04d184313c1359ac3d68002c33e4b1042ca58c362f1d09ff58 \ - --hash=sha256:7b378847a09d6bd46047f5f3599cdc64fcb4cc5a5a2dd0a2af610361fbe77b16 \ - --hash=sha256:7d1d6c9e74c70ddf524e3c09d9dc0522aba9370708c2cb58680ea40174800013 \ - --hash=sha256:857d6565f9aa3464764c2cb6a2e3c2e75e1970e877c188f4aeae45954a314e0c \ - --hash=sha256:8671622256a0859f5089cbe0ce4693c2af407bc053dcc99aadff7f5310b4aa02 \ - --hash=sha256:88f7c383071981c74ec1998ba9b437659e4fd02a3c4a4d3efc16774eb108d0ec \ - --hash=sha256:8aecb5a7f6f7f8fe9cac0bcadd39efaca8bbf8d1bf242e9f175cbe4c925116c3 \ - --hash=sha256:91bbf398ac8bb7d65a5a52127407c05f75a18d7015a270fdd94bbcb04e65d573 \ - --hash=sha256:936e8880cc00f839aa4173f94466a8406a96ddce814651075f95837316369899 \ - --hash=sha256:953dd5481bd6252bd480d6ec431f61d7d87fdcbbb71b0d2bdcfc6ae00bb6fb10 \ - --hash=sha256:95ae6c5a196e2f239150aa4a479967351df7f44800c93e5a975ec726fef005e2 \ - --hash=sha256:9a2b5915c333e4364367140443b59f09feae42184459b913f0f41b9fed55794a \ - --hash=sha256:9ae6c3363261021144121427b1552b29e7b59de9d6a75bf51e03bc072efb3c37 \ - --hash=sha256:9b556596c49fa1232b0fff4b0e69b9d4083a502e60e404b44341e2f8fb7187f5 \ - --hash=sha256:9c131447768ed7bc05a02553d939e7f0e807e533441901dd504e217b76307745 \ - --hash=sha256:9d9d5726474cbbef279fd709008f91a49c4f758bec9c062dfbba88eab00e3ff9 \ - --hash=sha256:a1bdcbebd4e13446a14de4dd1825f1e778e099f17f79718b4aeaf2403624b0f7 \ - --hash=sha256:a602ed9bd2c7d85bd58592c28e101bd9ff9c718fbde06545a70945ffd5d11868 \ - --hash=sha256:a8edae5253efa75c2fc79a90068fe540b197d1c7ab5803b800fccfe240eed33c \ - --hash=sha256:a905affe76f1802edcac554e3ccf68188bea16546071d7583fb1b693f9cf756b \ - --hash=sha256:a9e7c6d89c77bb2770c9491d988f26a4b161d05c8ca58f63fb1f1b6b9a74be45 \ - --hash=sha256:aa9b5abd07f71b081a33115d9758ef6077924082055005808f68feccb27616bd \ - --hash=sha256:aaa5c173a26960fe67daa69aa93d6d6a1cd714a6eb13802d4e4bd1d24a530644 \ - --hash=sha256:ac7674d1638df129d9cb4503d20ffc3922bd463c865ef3cb412f2c926108e9a4 \ - --hash=sha256:b1541e50b78e15fa06a2670157a1962ef06591d4c998b998047fff5e3236880e \ - --hash=sha256:b1980dbcaad634fe78e710c8587383e6e3f61dbe146bcbfd13a9c8ab2d7b1192 \ - --hash=sha256:bafa65e3acae612a7799ada439bd202403414ebe23f52e5b17f6ffc2eb98c2be \ - --hash=sha256:bb5bd6212eb0edfd1e8f254585290ea1dadc3687dd8fd5e2fd9a87c31915cdab \ - --hash=sha256:bbdd69e20fe2943b51e2841fc1e6a3c1de460d630f65bde12452d8c97209464d \ - --hash=sha256:bc354b1393dce46026ab13075f77b30e40b61b1a53e852e99d3cc5dd1af4bc85 \ - --hash=sha256:bcee502c649fa6351b44bb014b98c09cb00982a475a1912a9881ca28ab4f9cd9 \ - --hash=sha256:bdd9abccd0927673cffe601d2c6cdad1c9321bf3437a2f507d6b037ef91ea307 \ - --hash=sha256:c42ae7e010d7d6bc51875d768110c10e8a59494855c3d4c348b068f5fb81fdcd \ - --hash=sha256:c71b5b860c5215fdbaa56f715bc218e45a98477f816b46cfde4a84d25b13274e \ - --hash=sha256:c7721a3ef41591341388bb2265395ce522aba52f969d33dacd822da8f018aff8 \ - --hash=sha256:ca8e44b5ba3edb682ea4e6185b49661fc22b230cf811b9c13963c9f982d1d964 \ - --hash=sha256:cb53669442895763e61df5c995f0e8361b61662f26c1b04ee82899c2789c8f69 \ - --hash=sha256:cc02c06e9e320869d7d1bd323df6dd4281e78ac2e7f8526835d3d48c69060683 \ - --hash=sha256:d3caa09e613ece43ac292fbed513a4bce170681a447d25ffcbc1b647d45a39c5 \ - --hash=sha256:d82411dbf4d3127b6cde7da0f9373e37ad3a43e89ef374965465928f01c2b979 \ - --hash=sha256:dbcb2dc07308453db428a95a4d03259bd8caea97d7f0776842299f2d00c72fc8 \ - --hash=sha256:dd4fda67f5faaef4f9ee5383435048ee3e11ad996901225ad7615bc92245bc8e \ - --hash=sha256:ddd92e18b783aeb86ad2132d84a4b795fc5ec612e3545c1b687e7747e66e2b53 \ - --hash=sha256:de362ac8bc962408ad8fae28f3967ce1a262b5d63ab8cefb42662566737f1dc7 \ - --hash=sha256:e214025e23db238805a600f1f37bf9f9a15413c7bf5f9d6ae194f84980c78722 \ - --hash=sha256:e8f9f93a23634cfafbad6e46ad7d09e0f4a25a2400e4a64b1b7b7c0fbaa06d9d \ - --hash=sha256:e96a1788f24d03e8d61679f9881a883ecdf9c445a38f9ae3f3f193ab6c591c66 \ - --hash=sha256:ec53a09aee61d45e7dbe7e91252ff0491b6b5fee3d85b2d45b173d8ab453efc1 \ - --hash=sha256:f10250bb190fb0742e3e1958dd5c100524c2cc5096c67c8da51233f7448dc137 \ - --hash=sha256:f1faee2a831fe249e1bae9cbc68d3cd8a30f7e37851deee4d7962b17c410dd56 \ - --hash=sha256:f610d980e3fccf4394ab3806de6065682982f3d27c12d4ce3ee46a8183d64a6a \ - --hash=sha256:f6c35b2f87c004270fa2e703b872fcc984d714d430b305145c39d53074e1ffe0 \ - --hash=sha256:f836f39678cb47c9541f04d8ed4545719dc31ad850bf1832d6b4171e30d65d23 \ - --hash=sha256:f99768232f036b4776ce419d3244a04fe83784bce871b16d2c2e984c7fcea847 \ - --hash=sha256:fd814847901df6e8de13ce69b84c31fc9b3fb591224d6762d0b256d510cbf382 \ - --hash=sha256:fdb325b7fba1e2c40b9b1db407f85642e32404131c08480dd652110fc908561b opentelemetry-api==1.20.0 ; python_version >= "3.10" and python_version < "4.0" \ --hash=sha256:06abe351db7572f8afdd0fb889ce53f3c992dbf6f6262507b385cc1963e06983 \ --hash=sha256:982b76036fec0fdaf490ae3dfd9f28c81442a33414f737abc687a32758cdcba5 From b86a6ce525cb2edad4e94575291c6a29153fb8c5 Mon Sep 17 00:00:00 2001 From: Rieven Date: Mon, 26 Feb 2024 09:40:12 +0100 Subject: [PATCH 68/85] Select all oois triggers toggle all (#2536) --- .../templates/partials/report_ooi_list.html | 32 ++++++----- rocky/tests/conftest.py | 13 +++++ rocky/tests/reports/test_base_report.py | 56 +++++++++++++++++++ 3 files changed, 87 insertions(+), 14 deletions(-) create mode 100644 rocky/tests/reports/test_base_report.py diff --git a/rocky/reports/templates/partials/report_ooi_list.html b/rocky/reports/templates/partials/report_ooi_list.html index 646f91d7707..324636295d3 100644 --- a/rocky/reports/templates/partials/report_ooi_list.html +++ b/rocky/reports/templates/partials/report_ooi_list.html @@ -31,25 +31,29 @@

    href="{% url 'ooi_list' organization_code=organization.code %}">{% translate "Go to the object page" %} {% else %} + {% if channel == "aggregate_report" %} +

    + {% translate "Explanation 'Continue with all OOIs'" %}: + {% blocktrans trimmed %} + This option will select all OOIs (+ current filters) + for {{ organization }} organization. + {% endblocktrans %} +

    +
    + {% include "forms/report_form_fields.html" %} + + +
    + {% endif %}
    {% include "forms/report_form_fields.html" %} - {% if channel != "generate_report" %} -

    - {% translate "Explanation 'Continue with all OOIs'" %}: - {% blocktrans trimmed %} - This option will select all OOIs (+ current filters) - for {{ organization }} organization. - {% endblocktrans %} -

    - - {% endif %} diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index b1e62a4e4f6..da969ad54e1 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -873,3 +873,16 @@ def list_origins( @pytest.fixture def mock_octopoes_api_connector(valid_time): return MockOctopoesAPIConnector(valid_time) + + +@pytest.fixture +def listed_hostnames(network): + return [ + Hostname(network=network.reference, name="example.com"), + Hostname(network=network.reference, name="a.example.com"), + Hostname(network=network.reference, name="b.example.com"), + Hostname(network=network.reference, name="c.example.com"), + Hostname(network=network.reference, name="d.example.com"), + Hostname(network=network.reference, name="e.example.com"), + Hostname(network=network.reference, name="f.example.com"), + ] diff --git a/rocky/tests/reports/test_base_report.py b/rocky/tests/reports/test_base_report.py new file mode 100644 index 00000000000..f3431d1a7c6 --- /dev/null +++ b/rocky/tests/reports/test_base_report.py @@ -0,0 +1,56 @@ +from django.urls import resolve, reverse +from pytest_django.asserts import assertContains +from reports.views.aggregate_report import OOISelectionAggregateReportView, ReportTypesSelectionAggregateReportView + +from octopoes.models.pagination import Paginated +from octopoes.models.types import OOIType +from tests.conftest import setup_request + + +def test_aggregate_report_select_oois(rf, client_member, mock_organization_view_octopoes, listed_hostnames): + kwargs = {"organization_code": client_member.organization.code} + url = reverse("aggregate_report_select_oois", kwargs=kwargs) + request = rf.get(url) + request.resolver_match = resolve(url) + + setup_request(request, client_member.user) + + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( + count=len(listed_hostnames), items=listed_hostnames + ) + + response = OOISelectionAggregateReportView.as_view()(request, organization_code=client_member.organization.code) + + assert response.status_code == 200 + assert mock_organization_view_octopoes().list_objects.call_count == 2 + + assertContains(response, "Showing " + str(len(listed_hostnames)) + " of " + str(len(listed_hostnames)) + " objects") + assertContains(response, "Hostname") + assertContains(response, "example.com") + + +def test_aggregate_report_choose_report_types( + rf, client_member, mock_organization_view_octopoes, listed_hostnames, valid_time +): + kwargs = {"organization_code": client_member.organization.code} + url = reverse("aggregate_report_select_oois", kwargs=kwargs) + + request = rf.get( + url, + {"observed_at": valid_time.strftime("%Y-%m-%d"), "ooi": "all"}, + ) + request.resolver_match = resolve(url) + + setup_request(request, client_member.user) + + mock_organization_view_octopoes().list_objects.return_value = Paginated[OOIType]( + count=len(listed_hostnames), items=listed_hostnames + ) + + response = ReportTypesSelectionAggregateReportView.as_view()( + request, organization_code=client_member.organization.code + ) + + assert response.status_code == 200 + + assertContains(response, "You have selected all objects in previous step.") From 4ca96c3a407a6e62a9e3abb77d81ee3fa35f6ba2 Mon Sep 17 00:00:00 2001 From: Jeroen Dekkers Date: Mon, 26 Feb 2024 10:10:10 +0100 Subject: [PATCH 69/85] Disable ruff split-on-trailing-comma and update ruff (#2544) Co-authored-by: ammar92 Co-authored-by: Jan Klopper --- boefjes/boefjes/api.py | 7 +--- boefjes/boefjes/job_handler.py | 7 +--- .../boefjes/katalogus/dependencies/plugins.py | 10 +---- .../katalogus/routers/organisations.py | 5 +-- .../boefjes/katalogus/storage/diskcache.py | 5 +-- .../katalogus/tests/test_organisations.py | 4 +- .../katalogus/tests/test_plugin_service.py | 6 +-- .../kat_binaryedge/containers/normalize.py | 9 +--- .../kat_binaryedge/databases/normalize.py | 9 +--- .../kat_binaryedge/http_web/normalize.py | 9 +--- .../message_queues/normalize.py | 9 +--- .../kat_binaryedge/protocols/normalize.py | 9 +--- .../remote_desktop/normalize.py | 9 +--- .../service_identification/normalize.py | 9 +--- .../kat_binaryedge/services/normalize.py | 9 +--- .../boefjes/plugins/kat_censys/normalize.py | 14 +------ .../boefjes/plugins/kat_dns_zone/normalize.py | 4 +- .../boefjes/plugins/kat_masscan/normalize.py | 9 +--- .../boefjes/plugins/kat_nmap_tcp/normalize.py | 9 +--- boefjes/boefjes/plugins/kat_snyk/normalize.py | 7 +--- boefjes/boefjes/sql/db_models.py | 10 +---- boefjes/boefjes/sql/organisation_storage.py | 5 +-- boefjes/tests/test_cve_finding_types.py | 4 +- boefjes/tests/test_snyk.py | 6 +-- bytes/bytes/database/sql_meta_repository.py | 10 +---- bytes/bytes/timestamping/hashing.py | 6 +-- bytes/tests/loading.py | 10 +---- octopoes/octopoes/api/router.py | 9 +--- octopoes/octopoes/connector/octopoes.py | 8 +--- octopoes/octopoes/core/service.py | 8 +--- octopoes/octopoes/models/__init__.py | 7 +--- .../octopoes/repositories/ooi_repository.py | 7 +--- .../repositories/scan_profile_repository.py | 6 +-- octopoes/octopoes/xtdb/query_builder.py | 5 +-- octopoes/tests/test_query_builder_new.py | 6 +-- .../tests/test_scan_profile_repository.py | 6 +-- pyproject.toml | 41 ++++++++++--------- rocky/account/views/login.py | 7 +--- rocky/katalogus/views/mixins.py | 13 ++---- rocky/onboarding/views.py | 15 ++----- rocky/rocky/views/mixins.py | 9 +--- .../rocky/views/ooi_detail_related_object.py | 4 +- rocky/rocky/views/ooi_view.py | 8 +--- rocky/rocky/views/scan_profile.py | 6 +-- rocky/tests/conftest.py | 9 +--- rocky/tests/test_crisis_room.py | 5 +-- rocky/tools/forms/base.py | 6 +-- rocky/tools/forms/ooi.py | 14 +------ .../management/commands/setup_dev_account.py | 6 +-- .../management/commands/setup_test_users.py | 8 +--- 50 files changed, 79 insertions(+), 344 deletions(-) diff --git a/boefjes/boefjes/api.py b/boefjes/boefjes/api.py index ab6558e47bb..7049051b317 100644 --- a/boefjes/boefjes/api.py +++ b/boefjes/boefjes/api.py @@ -13,12 +13,7 @@ from boefjes.clients.bytes_client import BytesAPIClient from boefjes.clients.scheduler_client import SchedulerAPIClient, TaskStatus from boefjes.config import settings -from boefjes.job_handler import ( - _find_ooi_in_past, - get_environment_settings, - get_octopoes_api_connector, - serialize_ooi, -) +from boefjes.job_handler import _find_ooi_in_past, get_environment_settings, get_octopoes_api_connector, serialize_ooi from boefjes.job_models import BoefjeMeta from boefjes.katalogus.local_repository import LocalPluginRepository, get_local_repository from boefjes.plugins.models import _default_mime_types diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 9479a02ee40..f98ecc62a94 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -13,12 +13,7 @@ from boefjes.clients.bytes_client import BytesAPIClient from boefjes.config import settings from boefjes.docker_boefjes_runner import DockerBoefjesRunner -from boefjes.job_models import ( - BoefjeMeta, - NormalizerMeta, - NormalizerPlainOOI, - NormalizerScanProfile, -) +from boefjes.job_models import BoefjeMeta, NormalizerMeta, NormalizerPlainOOI, NormalizerScanProfile from boefjes.katalogus.local_repository import LocalPluginRepository from boefjes.plugins.models import _default_mime_types from boefjes.runtime_interfaces import BoefjeJobRunner, Handler, NormalizerJobRunner diff --git a/boefjes/boefjes/katalogus/dependencies/plugins.py b/boefjes/boefjes/katalogus/dependencies/plugins.py index 9fae16b9503..6f31e08de4d 100644 --- a/boefjes/boefjes/katalogus/dependencies/plugins.py +++ b/boefjes/boefjes/katalogus/dependencies/plugins.py @@ -8,14 +8,8 @@ from jsonschema.validators import validate from sqlalchemy.orm import Session -from boefjes.katalogus.clients import ( - PluginRepositoryClient, - PluginRepositoryClientInterface, -) -from boefjes.katalogus.local_repository import ( - LocalPluginRepository, - get_local_repository, -) +from boefjes.katalogus.clients import PluginRepositoryClient, PluginRepositoryClientInterface +from boefjes.katalogus.local_repository import LocalPluginRepository, get_local_repository from boefjes.katalogus.models import RESERVED_LOCAL_ID, PluginType, Repository from boefjes.katalogus.storage.interfaces import ( NotFound, diff --git a/boefjes/boefjes/katalogus/routers/organisations.py b/boefjes/boefjes/katalogus/routers/organisations.py index 1dd98ec823a..fcb68e0f99f 100644 --- a/boefjes/boefjes/katalogus/routers/organisations.py +++ b/boefjes/boefjes/katalogus/routers/organisations.py @@ -2,10 +2,7 @@ from boefjes.katalogus.dependencies.organisations import get_organisations_store from boefjes.katalogus.models import Organisation -from boefjes.katalogus.storage.interfaces import ( - OrganisationNotFound, - OrganisationStorage, -) +from boefjes.katalogus.storage.interfaces import OrganisationNotFound, OrganisationStorage from boefjes.sql.db import ObjectNotFoundException router = APIRouter(prefix="/organisations", tags=["organisations"]) diff --git a/boefjes/boefjes/katalogus/storage/diskcache.py b/boefjes/boefjes/katalogus/storage/diskcache.py index 99db648c11f..cf2fed8db98 100644 --- a/boefjes/boefjes/katalogus/storage/diskcache.py +++ b/boefjes/boefjes/katalogus/storage/diskcache.py @@ -3,10 +3,7 @@ from diskcache import Cache from boefjes.katalogus.models import Organisation, Repository -from boefjes.katalogus.storage.interfaces import ( - OrganisationStorage, - RepositoryStorage, -) +from boefjes.katalogus.storage.interfaces import OrganisationStorage, RepositoryStorage # todo: improve duplicate code diff --git a/boefjes/boefjes/katalogus/tests/test_organisations.py b/boefjes/boefjes/katalogus/tests/test_organisations.py index 2b868e497df..79bc483c24b 100644 --- a/boefjes/boefjes/katalogus/tests/test_organisations.py +++ b/boefjes/boefjes/katalogus/tests/test_organisations.py @@ -4,9 +4,7 @@ from fastapi.testclient import TestClient from boefjes.katalogus.api import app -from boefjes.katalogus.dependencies.organisations import ( - get_organisations_store, -) +from boefjes.katalogus.dependencies.organisations import get_organisations_store from boefjes.katalogus.models import Organisation from boefjes.katalogus.storage.memory import OrganisationStorageMemory diff --git a/boefjes/boefjes/katalogus/tests/test_plugin_service.py b/boefjes/boefjes/katalogus/tests/test_plugin_service.py index 0c1a61d0cf1..dcab2eaacb3 100644 --- a/boefjes/boefjes/katalogus/tests/test_plugin_service.py +++ b/boefjes/boefjes/katalogus/tests/test_plugin_service.py @@ -6,11 +6,7 @@ from boefjes.katalogus.local_repository import LocalPluginRepository from boefjes.katalogus.models import RESERVED_LOCAL_ID, Bit, Boefje, Normalizer, Repository from boefjes.katalogus.storage.interfaces import SettingsNotConformingToSchema -from boefjes.katalogus.storage.memory import ( - PluginStatesStorageMemory, - RepositoryStorageMemory, - SettingsStorageMemory, -) +from boefjes.katalogus.storage.memory import PluginStatesStorageMemory, RepositoryStorageMemory, SettingsStorageMemory def get_plugin_seed(): diff --git a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py index c2ff217c73b..a5b31cf0cad 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/containers/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.software import Software, SoftwareInstance diff --git a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py index 3e837c569d8..65075dddc4f 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/databases/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.software import Software, SoftwareInstance diff --git a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py index 7594bd18301..0ca88594b18 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/http_web/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_binaryedge.services.normalize import get_name_from_cpe from octopoes.models import OOI, Reference -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.software import Software, SoftwareInstance diff --git a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py index f81efe19fc2..887a49d0e30 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/message_queues/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.software import Software diff --git a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py index dfc254b9207..ea195bba07b 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/protocols/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: diff --git a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py index ee5d520f567..3e867e106c4 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/remote_desktop/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.service import IPService, Service diff --git a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py index 42e83d47d94..a0cd29dcbb0 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/service_identification/normalize.py @@ -6,14 +6,7 @@ from boefjes.plugins.kat_binaryedge.services.normalize import get_name_from_cpe from octopoes.models import OOI, Reference from octopoes.models.ooi.findings import Finding, KATFindingType -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.service import IPService, Service from octopoes.models.ooi.software import Software, SoftwareInstance diff --git a/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py b/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py index 0c3da238815..4b4c3783d89 100644 --- a/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py +++ b/boefjes/boefjes/plugins/kat_binaryedge/services/normalize.py @@ -4,14 +4,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.software import Software, SoftwareInstance diff --git a/boefjes/boefjes/plugins/kat_censys/normalize.py b/boefjes/boefjes/plugins/kat_censys/normalize.py index a5c8f284c00..f3e68251f4b 100644 --- a/boefjes/boefjes/plugins/kat_censys/normalize.py +++ b/boefjes/boefjes/plugins/kat_censys/normalize.py @@ -6,20 +6,10 @@ from octopoes.models import OOI, Reference from octopoes.models.ooi.certificate import X509Certificate from octopoes.models.ooi.dns.zone import Hostname -from octopoes.models.ooi.network import ( - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPPort, Network, PortState, Protocol from octopoes.models.ooi.service import IPService, Service from octopoes.models.ooi.software import Software, SoftwareInstance -from octopoes.models.ooi.web import ( - HTTPHeader, - HTTPResource, - IPAddressHTTPURL, - Website, -) +from octopoes.models.ooi.web import HTTPHeader, HTTPResource, IPAddressHTTPURL, Website def run(normalizer_meta: NormalizerMeta, raw: bytes | str) -> Iterable[OOI]: diff --git a/boefjes/boefjes/plugins/kat_dns_zone/normalize.py b/boefjes/boefjes/plugins/kat_dns_zone/normalize.py index cb31f74e863..c496719868f 100644 --- a/boefjes/boefjes/plugins/kat_dns_zone/normalize.py +++ b/boefjes/boefjes/plugins/kat_dns_zone/normalize.py @@ -6,9 +6,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI -from octopoes.models.ooi.dns.records import ( - DNSSOARecord, -) +from octopoes.models.ooi.dns.records import DNSSOARecord from octopoes.models.ooi.dns.zone import DNSZone, Hostname from octopoes.models.ooi.network import Network diff --git a/boefjes/boefjes/plugins/kat_masscan/normalize.py b/boefjes/boefjes/plugins/kat_masscan/normalize.py index 68baadf6c21..c406ce6174b 100644 --- a/boefjes/boefjes/plugins/kat_masscan/normalize.py +++ b/boefjes/boefjes/plugins/kat_masscan/normalize.py @@ -5,14 +5,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol def get_ip_ports_and_service(ip_with_ports: dict, network: Network, netblock: Reference) -> Iterator[OOI]: diff --git a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py index d22587a5dee..5a13a194da2 100644 --- a/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py +++ b/boefjes/boefjes/plugins/kat_nmap_tcp/normalize.py @@ -6,14 +6,7 @@ from boefjes.job_models import NormalizerMeta from octopoes.models import OOI, Reference -from octopoes.models.ooi.network import ( - IPAddressV4, - IPAddressV6, - IPPort, - Network, - PortState, - Protocol, -) +from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, PortState, Protocol from octopoes.models.ooi.service import IPService, Service diff --git a/boefjes/boefjes/plugins/kat_snyk/normalize.py b/boefjes/boefjes/plugins/kat_snyk/normalize.py index 52cf6b6e8d5..e44ddacf499 100755 --- a/boefjes/boefjes/plugins/kat_snyk/normalize.py +++ b/boefjes/boefjes/plugins/kat_snyk/normalize.py @@ -5,12 +5,7 @@ from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_snyk import check_version from octopoes.models import OOI, Reference -from octopoes.models.ooi.findings import ( - CVEFindingType, - Finding, - KATFindingType, - SnykFindingType, -) +from octopoes.models.ooi.findings import CVEFindingType, Finding, KATFindingType, SnykFindingType logger = logging.getLogger(__name__) diff --git a/boefjes/boefjes/sql/db_models.py b/boefjes/boefjes/sql/db_models.py index a8418192056..04a284a9dba 100644 --- a/boefjes/boefjes/sql/db_models.py +++ b/boefjes/boefjes/sql/db_models.py @@ -1,12 +1,4 @@ -from sqlalchemy import ( - Boolean, - Column, - ForeignKey, - Integer, - String, - Table, - UniqueConstraint, -) +from sqlalchemy import Boolean, Column, ForeignKey, Integer, String, Table, UniqueConstraint from sqlalchemy.orm import relationship from boefjes.sql.db import SQL_BASE diff --git a/boefjes/boefjes/sql/organisation_storage.py b/boefjes/boefjes/sql/organisation_storage.py index 5a010ada7bf..d772b890e3e 100644 --- a/boefjes/boefjes/sql/organisation_storage.py +++ b/boefjes/boefjes/sql/organisation_storage.py @@ -4,10 +4,7 @@ from boefjes.config import Settings, settings from boefjes.katalogus.models import Organisation, Repository -from boefjes.katalogus.storage.interfaces import ( - OrganisationNotFound, - OrganisationStorage, -) +from boefjes.katalogus.storage.interfaces import OrganisationNotFound, OrganisationStorage from boefjes.sql.db import ObjectNotFoundException from boefjes.sql.db_models import OrganisationInDB, RepositoryInDB from boefjes.sql.repository_storage import SQLRepositoryStorage diff --git a/boefjes/tests/test_cve_finding_types.py b/boefjes/tests/test_cve_finding_types.py index 986d681daed..79a24a35bc9 100644 --- a/boefjes/tests/test_cve_finding_types.py +++ b/boefjes/tests/test_cve_finding_types.py @@ -3,9 +3,7 @@ from boefjes.job_models import NormalizerMeta from boefjes.plugins.kat_cve_finding_types.normalize import run from octopoes.models.ooi.findings import RiskLevelSeverity -from octopoes.models.types import ( - CVEFindingType, -) +from octopoes.models.types import CVEFindingType from tests.loading import get_dummy_data diff --git a/boefjes/tests/test_snyk.py b/boefjes/tests/test_snyk.py index d6a587b4196..989b1fb6d8d 100644 --- a/boefjes/tests/test_snyk.py +++ b/boefjes/tests/test_snyk.py @@ -5,11 +5,7 @@ from boefjes.plugins.kat_snyk.main import run as run_boefje from boefjes.plugins.kat_snyk.normalize import run from octopoes.models.ooi.findings import SnykFindingType -from octopoes.models.types import ( - CVEFindingType, - Finding, - Software, -) +from octopoes.models.types import CVEFindingType, Finding, Software from tests.loading import get_dummy_data diff --git a/bytes/bytes/database/sql_meta_repository.py b/bytes/bytes/database/sql_meta_repository.py index d0a4bc6185d..77827993fbc 100644 --- a/bytes/bytes/database/sql_meta_repository.py +++ b/bytes/bytes/database/sql_meta_repository.py @@ -9,15 +9,7 @@ from bytes.config import Settings, get_settings from bytes.database.db import SQL_BASE, get_engine from bytes.database.db_models import BoefjeMetaInDB, NormalizerMetaInDB, RawFileInDB, SigningProviderInDB -from bytes.models import ( - Boefje, - BoefjeMeta, - MimeType, - Normalizer, - NormalizerMeta, - RawData, - RawDataMeta, -) +from bytes.models import Boefje, BoefjeMeta, MimeType, Normalizer, NormalizerMeta, RawData, RawDataMeta from bytes.raw.file_raw_repository import create_raw_repository from bytes.repositories.hash_repository import HashRepository from bytes.repositories.meta_repository import BoefjeMetaFilter, MetaDataRepository, NormalizerMetaFilter, RawDataFilter diff --git a/bytes/bytes/timestamping/hashing.py b/bytes/bytes/timestamping/hashing.py index b10f047959d..728b4b5917f 100644 --- a/bytes/bytes/timestamping/hashing.py +++ b/bytes/bytes/timestamping/hashing.py @@ -4,11 +4,7 @@ from pydantic import AwareDatetime -from bytes.models import ( - HashingAlgorithm, - RawData, - SecureHash, -) +from bytes.models import HashingAlgorithm, RawData, SecureHash logger = logging.getLogger(__name__) diff --git a/bytes/tests/loading.py b/bytes/tests/loading.py index 9b0b559cdaf..a381d57d080 100644 --- a/bytes/tests/loading.py +++ b/bytes/tests/loading.py @@ -5,15 +5,7 @@ from uuid import UUID from bytes.config import BASE_DIR -from bytes.models import ( - Boefje, - BoefjeMeta, - MimeType, - Normalizer, - NormalizerMeta, - RawData, - RawDataMeta, -) +from bytes.models import Boefje, BoefjeMeta, MimeType, Normalizer, NormalizerMeta, RawData, RawDataMeta def load_stub(relative_path: str) -> dict[str, Any]: diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index 522fb564731..4c31968d618 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -19,14 +19,7 @@ ) from octopoes.core.app import bootstrap_octopoes, get_xtdb_client from octopoes.core.service import OctopoesService -from octopoes.models import ( - OOI, - Reference, - ScanLevel, - ScanProfile, - ScanProfileBase, - ScanProfileType, -) +from octopoes.models import OOI, Reference, ScanLevel, ScanProfile, ScanProfileBase, ScanProfileType from octopoes.models.exception import ObjectNotFoundException from octopoes.models.explanation import InheritanceSection from octopoes.models.ooi.findings import Finding, RiskLevelSeverity diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index f7648e36576..6961da6cb2e 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -15,13 +15,7 @@ DEFAULT_SCAN_PROFILE_TYPE_FILTER, ) from octopoes.connector import DecodeException, RemoteException -from octopoes.models import ( - OOI, - Reference, - ScanLevel, - ScanProfile, - ScanProfileType, -) +from octopoes.models import OOI, Reference, ScanLevel, ScanProfile, ScanProfileType from octopoes.models.exception import ObjectNotFoundException from octopoes.models.explanation import InheritanceSection from octopoes.models.ooi.findings import Finding, RiskLevelSeverity diff --git a/octopoes/octopoes/core/service.py b/octopoes/octopoes/core/service.py index 368e7b301b5..427185e89f0 100644 --- a/octopoes/octopoes/core/service.py +++ b/octopoes/octopoes/core/service.py @@ -14,13 +14,7 @@ DEFAULT_SCAN_PROFILE_TYPE_FILTER, Settings, ) -from octopoes.events.events import ( - DBEvent, - OOIDBEvent, - OriginDBEvent, - OriginParameterDBEvent, - ScanProfileDBEvent, -) +from octopoes.events.events import DBEvent, OOIDBEvent, OriginDBEvent, OriginParameterDBEvent, ScanProfileDBEvent from octopoes.models import ( OOI, DeclaredScanProfile, diff --git a/octopoes/octopoes/models/__init__.py b/octopoes/octopoes/models/__init__.py index ad582b5c709..361880c6356 100644 --- a/octopoes/octopoes/models/__init__.py +++ b/octopoes/octopoes/models/__init__.py @@ -2,12 +2,7 @@ import abc from enum import Enum, IntEnum -from typing import ( - Any, - ClassVar, - Literal, - TypeVar, -) +from typing import Any, ClassVar, Literal, TypeVar from pydantic import BaseModel, GetCoreSchemaHandler, RootModel from pydantic_core import CoreSchema, core_schema diff --git a/octopoes/octopoes/repositories/ooi_repository.py b/octopoes/octopoes/repositories/ooi_repository.py index 668e6db2954..b70caa77da5 100644 --- a/octopoes/octopoes/repositories/ooi_repository.py +++ b/octopoes/octopoes/repositories/ooi_repository.py @@ -19,12 +19,7 @@ ) from octopoes.events.events import OOIDBEvent, OperationType from octopoes.events.manager import EventManager -from octopoes.models import ( - OOI, - Reference, - ScanLevel, - ScanProfileType, -) +from octopoes.models import OOI, Reference, ScanLevel, ScanProfileType from octopoes.models.exception import ObjectNotFoundException from octopoes.models.ooi.config import Config from octopoes.models.ooi.findings import Finding, FindingType, RiskLevelSeverity diff --git a/octopoes/octopoes/repositories/scan_profile_repository.py b/octopoes/octopoes/repositories/scan_profile_repository.py index 7ed63b4d9e5..e11e4dd2061 100644 --- a/octopoes/octopoes/repositories/scan_profile_repository.py +++ b/octopoes/octopoes/repositories/scan_profile_repository.py @@ -8,11 +8,7 @@ from octopoes.events.events import OperationType, ScanProfileDBEvent from octopoes.events.manager import EventManager -from octopoes.models import ( - Reference, - ScanProfile, - ScanProfileBase, -) +from octopoes.models import Reference, ScanProfile, ScanProfileBase from octopoes.models.exception import ObjectNotFoundException from octopoes.repositories.repository import Repository from octopoes.xtdb import FieldSet diff --git a/octopoes/octopoes/xtdb/query_builder.py b/octopoes/octopoes/xtdb/query_builder.py index 97de6f301d7..ad6d0b4af2d 100644 --- a/octopoes/octopoes/xtdb/query_builder.py +++ b/octopoes/octopoes/xtdb/query_builder.py @@ -1,10 +1,7 @@ import re from collections.abc import Iterator -from octopoes.xtdb.related_field_generator import ( - FieldSet, - RelatedFieldNode, -) +from octopoes.xtdb.related_field_generator import FieldSet, RelatedFieldNode def join_csv(values: Iterator[any]) -> str: diff --git a/octopoes/tests/test_query_builder_new.py b/octopoes/tests/test_query_builder_new.py index 2c5d5e39498..23e56af2ab6 100644 --- a/octopoes/tests/test_query_builder_new.py +++ b/octopoes/tests/test_query_builder_new.py @@ -1,11 +1,7 @@ from unittest import TestCase from octopoes.models.origin import Origin -from octopoes.xtdb import ( - Datamodel, - FieldSet, - ForeignKey, -) +from octopoes.xtdb import Datamodel, FieldSet, ForeignKey from octopoes.xtdb.query_builder import generate_pull_query from octopoes.xtdb.related_field_generator import RelatedFieldNode diff --git a/octopoes/tests/test_scan_profile_repository.py b/octopoes/tests/test_scan_profile_repository.py index d73955666cf..4d437eb6965 100644 --- a/octopoes/tests/test_scan_profile_repository.py +++ b/octopoes/tests/test_scan_profile_repository.py @@ -3,11 +3,7 @@ from octopoes.models import DeclaredScanProfile, InheritedScanProfile, Reference from octopoes.repositories.scan_profile_repository import XTDBScanProfileRepository -from tests.mocks.mock_ooi_types import ( - ALL_OOI_TYPES, - MockIPAddressV4, - MockNetwork, -) +from tests.mocks.mock_ooi_types import ALL_OOI_TYPES, MockIPAddressV4, MockNetwork @patch("octopoes.models.types.ALL_TYPES", ALL_OOI_TYPES) diff --git a/pyproject.toml b/pyproject.toml index 6144e2e37d8..8165bdbba36 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,21 +27,6 @@ paths = ["."] [tool.ruff] -# Enable classic flake8, pyflakes, eradicate, and tidyimport -# To be extended with DJ, PT, RUF, C90, D, PL, RET -select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH", "SIM", "PLC", "A", "S"] -ignore = [ - "A003", # Built-in shadowing is usually not a problem and some built-ins have very generic names - "SIM108", # Ternary operator is not always more readable - "S101", # Assert use is normal in pytest tests - "S104", # Binding to all is normal in containers - "S105", # Disabled because of false positives - "S106", # Disabled because of false positives - "S308", # Mark_safe usage is okay - "S324", # Insecure hash functions can still be useful - "S603", # Disabled because of false positives - "S607", # Disabled because of false positives -] fix = true # Exclude a variety of commonly ignored directories. @@ -76,11 +61,27 @@ line-length = 120 # Support Python 3.10 and higher target-version = "py310" +[tool.ruff.lint] +# Enable classic flake8, pyflakes, eradicate, and tidyimport +# To be extended with DJ, PT, RUF, C90, D, PL, RET +select = ["E", "F", "ERA", "W", "TID", "I", "G", "INP", "T20", "UP", "ISC", "PTH", "SIM", "PLC", "A", "S"] +ignore = [ + "A003", # Built-in shadowing is usually not a problem and some built-ins have very generic names + "SIM108", # Ternary operator is not always more readable + "S101", # Assert use is normal in pytest tests + "S104", # Binding to all is normal in containers + "S105", # Disabled because of false positives + "S106", # Disabled because of false positives + "S308", # Mark_safe usage is okay + "S324", # Insecure hash functions can still be useful + "S603", # Disabled because of false positives + "S607", # Disabled because of false positives +] + # Add "Example" to allowed code comments task-tags = ["Example", "todo", "TODO", "FIXME"] - -[tool.ruff.per-file-ignores] +[tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401","F403"] "whitelist.py" = ["F821", "INP"] "rocky/*/migrations/*.py" = ["E501"] @@ -97,10 +98,12 @@ task-tags = ["Example", "todo", "TODO", "FIXME"] "scripts/*.py" = ["INP001", "T201"] "cveapi/cveapi.py" = ["INP001"] -[tool.ruff.flake8-tidy-imports] -[tool.ruff.flake8-tidy-imports.banned-api] +[tool.ruff.lint.flake8-tidy-imports.banned-api] "rocky.settings".msg = "Use django.conf.settings" +[tool.ruff.lint.isort] +split-on-trailing-comma = false + [tool.codespell] ignore-words-list = 'edn,juxt' diff --git a/rocky/account/views/login.py b/rocky/account/views/login.py index c9bd4bfe8bd..f3bb1cd9f02 100644 --- a/rocky/account/views/login.py +++ b/rocky/account/views/login.py @@ -12,12 +12,7 @@ from two_factor.views import LoginView, SetupView from two_factor.views.utils import class_view_decorator -from account.forms import ( - LoginForm, - TwoFactorBackupTokenForm, - TwoFactorSetupTokenForm, - TwoFactorVerifyTokenForm, -) +from account.forms import LoginForm, TwoFactorBackupTokenForm, TwoFactorSetupTokenForm, TwoFactorVerifyTokenForm User = get_user_model() diff --git a/rocky/katalogus/views/mixins.py b/rocky/katalogus/views/mixins.py index de171ad336f..33911312b94 100644 --- a/rocky/katalogus/views/mixins.py +++ b/rocky/katalogus/views/mixins.py @@ -10,16 +10,9 @@ from rest_framework.status import HTTP_404_NOT_FOUND from tools.view_helpers import schedule_task -from katalogus.client import ( - Boefje as KATalogusBoefje, -) -from katalogus.client import ( - KATalogusClientV1, - get_katalogus, -) -from katalogus.client import ( - Normalizer as KATalogusNormalizer, -) +from katalogus.client import Boefje as KATalogusBoefje +from katalogus.client import KATalogusClientV1, get_katalogus +from katalogus.client import Normalizer as KATalogusNormalizer from octopoes.models import OOI from rocky.exceptions import ( AcknowledgedClearanceLevelTooLowException, diff --git a/rocky/onboarding/views.py b/rocky/onboarding/views.py index f11d6608dc3..7ef0f2c99cc 100644 --- a/rocky/onboarding/views.py +++ b/rocky/onboarding/views.py @@ -1,10 +1,7 @@ from typing import Any from account.forms import MemberRegistrationForm, OnboardingOrganizationUpdateForm, OrganizationForm -from account.mixins import ( - OrganizationPermissionRequiredMixin, - OrganizationView, -) +from account.mixins import OrganizationPermissionRequiredMixin, OrganizationView from account.views import OOIClearanceMixin from django.contrib import messages from django.contrib.auth import get_user_model @@ -21,20 +18,14 @@ from tools.forms.boefje import SelectBoefjeForm from tools.forms.ooi_form import OOIForm from tools.models import GROUP_ADMIN, GROUP_CLIENT, GROUP_REDTEAM, Organization, OrganizationMember -from tools.ooi_helpers import ( - create_object_tree_item_from_ref, - filter_ooi_tree, - get_or_create_ooi, -) +from tools.ooi_helpers import create_object_tree_item_from_ref, filter_ooi_tree, get_or_create_ooi from tools.view_helpers import Breadcrumb, BreadcrumbsMixin, get_ooi_url from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import OOI from octopoes.models.ooi.network import Network from octopoes.models.types import type_by_name -from onboarding.forms import ( - OnboardingSetClearanceLevelForm, -) +from onboarding.forms import OnboardingSetClearanceLevelForm from onboarding.view_helpers import ( DNS_REPORT_LEAST_CLEARANCE_LEVEL, ONBOARDING_PERMISSIONS, diff --git a/rocky/rocky/views/mixins.py b/rocky/rocky/views/mixins.py index 6e6c41872f4..dacb2298c67 100644 --- a/rocky/rocky/views/mixins.py +++ b/rocky/rocky/views/mixins.py @@ -14,13 +14,8 @@ from tools.forms.base import ObservedAtForm from tools.forms.settings import DEPTH_DEFAULT, DEPTH_MAX from tools.models import Organization -from tools.ooi_helpers import ( - get_knowledge_base_data_for_ooi_store, -) -from tools.view_helpers import ( - convert_date_to_datetime, - get_ooi_url, -) +from tools.ooi_helpers import get_knowledge_base_data_for_ooi_store +from tools.view_helpers import convert_date_to_datetime, get_ooi_url from octopoes.connector import ObjectNotFoundException from octopoes.connector.octopoes import OctopoesAPIConnector diff --git a/rocky/rocky/views/ooi_detail_related_object.py b/rocky/rocky/views/ooi_detail_related_object.py index 89f1373972a..2cb212d39e3 100644 --- a/rocky/rocky/views/ooi_detail_related_object.py +++ b/rocky/rocky/views/ooi_detail_related_object.py @@ -4,9 +4,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView -from tools.ooi_helpers import ( - format_attr_name, -) +from tools.ooi_helpers import format_attr_name from tools.view_helpers import existing_ooi_type, get_mandatory_fields, url_with_querystring from octopoes.models import OOI diff --git a/rocky/rocky/views/ooi_view.py b/rocky/rocky/views/ooi_view.py index 4bb09a83a64..374a7b8ec1d 100644 --- a/rocky/rocky/views/ooi_view.py +++ b/rocky/rocky/views/ooi_view.py @@ -18,13 +18,7 @@ from octopoes.models import OOI, ScanLevel, ScanProfileType from octopoes.models.ooi.findings import Finding, FindingType from octopoes.models.types import get_collapsed_types, type_by_name -from rocky.views.mixins import ( - ConnectorFormMixin, - OctopoesView, - OOIList, - SingleOOIMixin, - SingleOOITreeMixin, -) +from rocky.views.mixins import ConnectorFormMixin, OctopoesView, OOIList, SingleOOIMixin, SingleOOITreeMixin class OOIFilterView(ConnectorFormMixin, OctopoesView): diff --git a/rocky/rocky/views/scan_profile.py b/rocky/rocky/views/scan_profile.py index f7d98a407fd..f3f6d387c81 100644 --- a/rocky/rocky/views/scan_profile.py +++ b/rocky/rocky/views/scan_profile.py @@ -8,11 +8,7 @@ from django.views.generic import FormView from tools.forms.ooi import SetClearanceLevelForm from tools.models import Indemnification -from tools.view_helpers import ( - Breadcrumb, - get_mandatory_fields, - get_ooi_url, -) +from tools.view_helpers import Breadcrumb, get_mandatory_fields, get_ooi_url from octopoes.models import EmptyScanProfile, InheritedScanProfile from rocky.exceptions import ( diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index da969ad54e1..80fcecfca8c 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -19,14 +19,7 @@ from django_otp.middleware import OTPMiddleware from katalogus.client import parse_plugin from requests import Response -from tools.models import ( - GROUP_ADMIN, - GROUP_CLIENT, - GROUP_REDTEAM, - Indemnification, - Organization, - OrganizationMember, -) +from tools.models import GROUP_ADMIN, GROUP_CLIENT, GROUP_REDTEAM, Indemnification, Organization, OrganizationMember from octopoes.models import OOI, DeclaredScanProfile, Reference, ScanLevel from octopoes.models.ooi.dns.zone import Hostname diff --git a/rocky/tests/test_crisis_room.py b/rocky/tests/test_crisis_room.py index 92b8a560fe5..ab5499e8550 100644 --- a/rocky/tests/test_crisis_room.py +++ b/rocky/tests/test_crisis_room.py @@ -1,9 +1,6 @@ from datetime import datetime, timezone -from crisis_room.views import ( - CrisisRoomView, - OrganizationFindingCountPerSeverity, -) +from crisis_room.views import CrisisRoomView, OrganizationFindingCountPerSeverity from django.urls import resolve, reverse from pytest_django.asserts import assertContains diff --git a/rocky/tools/forms/base.py b/rocky/tools/forms/base.py index 3144eee7fc4..7bf73024c8f 100644 --- a/rocky/tools/forms/base.py +++ b/rocky/tools/forms/base.py @@ -6,11 +6,7 @@ from django.forms import Widget from django.utils.translation import gettext_lazy as _ -from tools.forms.settings import ( - OBSERVED_AT_HELP_TEXT, - Choices, - ChoicesGroups, -) +from tools.forms.settings import OBSERVED_AT_HELP_TEXT, Choices, ChoicesGroups class BaseRockyModelForm(forms.ModelForm): diff --git a/rocky/tools/forms/ooi.py b/rocky/tools/forms/ooi.py index ed14e4958a2..849862f46af 100644 --- a/rocky/tools/forms/ooi.py +++ b/rocky/tools/forms/ooi.py @@ -4,18 +4,8 @@ from django.utils.translation import gettext_lazy as _ from octopoes.models import OOI -from tools.forms.base import ( - BaseRockyForm, - CheckboxTable, - LabeledCheckboxInput, - ObservedAtForm, -) -from tools.forms.settings import ( - DEPTH_DEFAULT, - DEPTH_HELP_TEXT, - DEPTH_MAX, - SCAN_LEVEL_CHOICES, -) +from tools.forms.base import BaseRockyForm, CheckboxTable, LabeledCheckboxInput, ObservedAtForm +from tools.forms.settings import DEPTH_DEFAULT, DEPTH_HELP_TEXT, DEPTH_MAX, SCAN_LEVEL_CHOICES class OOIReportSettingsForm(ObservedAtForm): diff --git a/rocky/tools/management/commands/setup_dev_account.py b/rocky/tools/management/commands/setup_dev_account.py index d3c6c4fcedf..ae401e8543b 100644 --- a/rocky/tools/management/commands/setup_dev_account.py +++ b/rocky/tools/management/commands/setup_dev_account.py @@ -5,11 +5,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.core.management import BaseCommand -from tools.models import ( - GROUP_ADMIN, - GROUP_CLIENT, - GROUP_REDTEAM, -) +from tools.models import GROUP_ADMIN, GROUP_CLIENT, GROUP_REDTEAM User = get_user_model() diff --git a/rocky/tools/management/commands/setup_test_users.py b/rocky/tools/management/commands/setup_test_users.py index bc5cf231e34..cdb7973c5a1 100644 --- a/rocky/tools/management/commands/setup_test_users.py +++ b/rocky/tools/management/commands/setup_test_users.py @@ -3,13 +3,7 @@ from django.core.management import BaseCommand from django_otp.plugins.otp_totp.models import TOTPDevice -from tools.models import ( - GROUP_ADMIN, - GROUP_CLIENT, - GROUP_REDTEAM, - Organization, - OrganizationMember, -) +from tools.models import GROUP_ADMIN, GROUP_CLIENT, GROUP_REDTEAM, Organization, OrganizationMember User = get_user_model() From d11aac0d539a5a6101906951cce81331bf0ee9fe Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Mon, 26 Feb 2024 13:58:45 +0100 Subject: [PATCH 70/85] Sort vulnerabilities in vulnerability report (#2378) Co-authored-by: Jan Klopper Co-authored-by: Jeroen Dekkers Co-authored-by: ammar92 --- .../vulnerability_report/report.py | 8 ++- rocky/tests/conftest.py | 27 ++++++++ .../reports/test_vulnerability_report.py | 62 +++++++++++++++++++ 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/rocky/reports/report_types/vulnerability_report/report.py b/rocky/reports/report_types/vulnerability_report/report.py index c7e8ad9ee9f..6aa1bbb3ff3 100644 --- a/rocky/reports/report_types/vulnerability_report/report.py +++ b/rocky/reports/report_types/vulnerability_report/report.py @@ -91,7 +91,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ for ip, findings_data in all_findings.items(): summary = {} - vulnerabilities = {} + vulnerabilities: dict[str, dict[str, Any]] = {} total_criticals = 0 finding_types_ids = [finding_type.id for finding_type in findings_data["finding_types"]] occurrences = Counter(finding_types_ids) @@ -145,6 +145,10 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ if finding_type.recommendation: recommendations.append(finding_type.recommendation) + sorted_vulnerabilities = sorted( + vulnerabilities.items(), key=lambda x: x[1].get("cvss", {}).get("score", 0) or 0, reverse=True + ) + summary = { "total_findings": total_findings, "total_criticals": total_criticals, @@ -152,6 +156,6 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ "recommendations": recommendations, } - data[ip] = {"vulnerabilities": vulnerabilities, "summary": summary} + data[ip] = {"vulnerabilities": dict(sorted_vulnerabilities), "summary": summary} return data diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 80fcecfca8c..1cb8685ba64 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -475,6 +475,20 @@ def cve_finding_type_2019_8331(): ) +@pytest.fixture +def cve_finding_type_2019_2019(): + return CVEFindingType( + id="CVE-2019-2019", + description="In ce_t4t_data_cback of ce_t4t.cc, there is a possible out-of-bound read due to a missing bounds " + "check. This could lead to local information disclosure with no additional execution privileges " + "needed. User interaction is needed for exploitation.Product: AndroidVersions: Android-7.0 " + "Android-7.1.1 Android-7.1.2 Android-8.0 Android-8.1 Android-9Android ID: A-115635871", + source="https://cve.circl.lu/cve/CVE-2019-2019", + risk_score=6.5, + risk_severity=RiskLevelSeverity.MEDIUM, + ) + + @pytest.fixture def cve_finding_2019_8331(): return Finding( @@ -488,6 +502,19 @@ def cve_finding_2019_8331(): ) +@pytest.fixture +def cve_finding_2019_2019(): + return Finding( + finding_type=Reference.from_str("CVEFindingType|CVE-2019-2019"), + ooi=Reference.from_str( + "Finding|SoftwareInstance|HostnameHTTPURL|https|internet|mispo.es|443|/|Software|Bootstrap|3.3.7|cpe:/a:getbootstrap:bootstrap|CVE-2019-2019" + ), + proof=None, + description="Vulnerability CVE-2019-2019 detected", + reproduce=None, + ) + + @pytest.fixture def cve_finding_type_no_score(): return CVEFindingType( diff --git a/rocky/tests/reports/test_vulnerability_report.py b/rocky/tests/reports/test_vulnerability_report.py index 06005062d70..d9b929f511d 100644 --- a/rocky/tests/reports/test_vulnerability_report.py +++ b/rocky/tests/reports/test_vulnerability_report.py @@ -91,3 +91,65 @@ def test_vulnerability_report_finding_no_score( assert data[str(ipaddressv4.reference)]["vulnerabilities"]["CVE-2019-8331"]["cvss"]["score"] == 6.1 assert data[str(ipaddressv4.reference)]["summary"]["total_criticals"] == 0 assert data[str(ipaddressv4.reference)]["summary"]["total_findings"] == 2 + + +def test_vulnerability_report_two_findings( + mock_octopoes_api_connector, + valid_time, + ipaddressv4, + hostname, + cve_finding_2019_8331, + cve_finding_type_2019_8331, + cve_finding_2019_2019, + cve_finding_type_2019_2019, +): + mock_octopoes_api_connector.oois = { + hostname.reference: hostname, + } + mock_octopoes_api_connector.queries = { + "Hostname.. findings[1]["cvss"]["score"] + + mock_octopoes_api_connector.queries = { + "Hostname.. findings[1]["cvss"]["score"] From 7ed7578e2c5c3966325d43eb94d112df6367f5c0 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Tue, 27 Feb 2024 12:50:30 +0100 Subject: [PATCH 71/85] Add return typing to report test fixtures (#2557) --- rocky/tests/conftest.py | 56 ++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 1cb8685ba64..29b10079747 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -426,7 +426,7 @@ def lazy_task_list_with_boefje(task) -> MagicMock: @pytest.fixture -def network(): +def network() -> Network: return Network( name="testnetwork", scan_profile=DeclaredScanProfile(reference=Reference.from_str("Network|testnetwork"), level=ScanLevel.L1), @@ -434,37 +434,37 @@ def network(): @pytest.fixture -def ipaddressv4(network): +def ipaddressv4(network) -> IPAddressV4: return IPAddressV4(network=network.reference, address=IPv4Address("192.0.2.1")) @pytest.fixture -def ipaddressv6(network): +def ipaddressv6(network) -> IPAddressV6: return IPAddressV6(network=network.reference, address=IPv6Address("2001:db8::1")) @pytest.fixture -def ip_port(ipaddressv4): +def ip_port(ipaddressv4) -> IPPort: return IPPort(address=ipaddressv4.reference, port=80, protocol=Protocol.TCP) @pytest.fixture -def hostname(network): +def hostname(network) -> Hostname: return Hostname(name="example.com", network=network.reference) @pytest.fixture -def service(): +def service() -> Service: return Service(name="domain") @pytest.fixture -def software(): +def software() -> Software: return Software(name="DICOM") @pytest.fixture -def cve_finding_type_2019_8331(): +def cve_finding_type_2019_8331() -> CVEFindingType: return CVEFindingType( id="CVE-2019-8331", description="In Bootstrap before 3.4.1 and 4.3.x before 4.3.1, XSS is possible in the tooltip or " @@ -476,7 +476,7 @@ def cve_finding_type_2019_8331(): @pytest.fixture -def cve_finding_type_2019_2019(): +def cve_finding_type_2019_2019() -> CVEFindingType: return CVEFindingType( id="CVE-2019-2019", description="In ce_t4t_data_cback of ce_t4t.cc, there is a possible out-of-bound read due to a missing bounds " @@ -490,7 +490,7 @@ def cve_finding_type_2019_2019(): @pytest.fixture -def cve_finding_2019_8331(): +def cve_finding_2019_8331() -> Finding: return Finding( finding_type=Reference.from_str("CVEFindingType|CVE-2019-8331"), ooi=Reference.from_str( @@ -503,7 +503,7 @@ def cve_finding_2019_8331(): @pytest.fixture -def cve_finding_2019_2019(): +def cve_finding_2019_2019() -> Finding: return Finding( finding_type=Reference.from_str("CVEFindingType|CVE-2019-2019"), ooi=Reference.from_str( @@ -516,7 +516,7 @@ def cve_finding_2019_2019(): @pytest.fixture -def cve_finding_type_no_score(): +def cve_finding_type_no_score() -> CVEFindingType: return CVEFindingType( id="CVE-0000-0001", description="CVE Finding without scopre", @@ -526,7 +526,7 @@ def cve_finding_type_no_score(): @pytest.fixture -def cve_finding_no_score(): +def cve_finding_no_score() -> Finding: return Finding( finding_type=Reference.from_str("CVEFindingType|CVE-0000-0001"), ooi=Reference.from_str( @@ -539,7 +539,7 @@ def cve_finding_no_score(): @pytest.fixture -def finding(): +def finding() -> Finding: return Finding( finding_type=Reference.from_str("KATFindingType|KAT-0001"), ooi=Reference.from_str("Network|testnetwork"), @@ -550,17 +550,17 @@ def finding(): @pytest.fixture -def no_rpki_finding_type(): +def no_rpki_finding_type() -> KATFindingType: return KATFindingType(id="KAT-NO-RPKI") @pytest.fixture -def expired_rpki_finding_type(): +def expired_rpki_finding_type() -> KATFindingType: return KATFindingType(id="KAT-EXPIRED-RPKI") @pytest.fixture -def finding_types(): +def finding_types() -> list[KATFindingType]: return [ KATFindingType( id="KAT-0001", @@ -587,7 +587,7 @@ def finding_types(): @pytest.fixture -def cipher_finding_types(): +def cipher_finding_types() -> list[KATFindingType]: return [ KATFindingType( id="KAT-RECOMMENDATION-BAD-CIPHER", @@ -607,7 +607,7 @@ def cipher_finding_types(): @pytest.fixture -def cipher_finding_type(): +def cipher_finding_type() -> KATFindingType: return KATFindingType( id="KAT-MEDIUM-BAD-CIPHER", description="Fake description...", @@ -618,7 +618,7 @@ def cipher_finding_type(): @pytest.fixture -def finding_type_kat_no_spf(): +def finding_type_kat_no_spf() -> KATFindingType: return KATFindingType( id="KAT-NO-SPF", description="Fake description...", @@ -629,7 +629,7 @@ def finding_type_kat_no_spf(): @pytest.fixture -def finding_type_kat_no_dmarc(): +def finding_type_kat_no_dmarc() -> KATFindingType: return KATFindingType( id="KAT-NO-DMARC", description="Fake description...", @@ -640,7 +640,7 @@ def finding_type_kat_no_dmarc(): @pytest.fixture -def finding_type_kat_no_dkim(): +def finding_type_kat_no_dkim() -> KATFindingType: return KATFindingType( id="KAT-NO-DKIM", description="Fake description...", @@ -651,7 +651,7 @@ def finding_type_kat_no_dkim(): @pytest.fixture -def finding_type_kat_uncommon_open_port(): +def finding_type_kat_uncommon_open_port() -> KATFindingType: return KATFindingType( id="KAT-UNCOMMON-OPEN-PORT", description="Fake description...", @@ -662,7 +662,7 @@ def finding_type_kat_uncommon_open_port(): @pytest.fixture -def finding_type_kat_open_sysadmin_port(): +def finding_type_kat_open_sysadmin_port() -> KATFindingType: return KATFindingType( id="KAT-OPEN-SYSADMIN-PORT", description="Fake description...", @@ -673,7 +673,7 @@ def finding_type_kat_open_sysadmin_port(): @pytest.fixture -def finding_type_kat_open_database_port(): +def finding_type_kat_open_database_port() -> KATFindingType: return KATFindingType( id="KAT-OPEN-DATABASE-PORT", description="Fake description...", @@ -684,7 +684,7 @@ def finding_type_kat_open_database_port(): @pytest.fixture -def finding_type_kat_no_dnssec(): +def finding_type_kat_no_dnssec() -> KATFindingType: return KATFindingType( id="KAT-NO-DNSSEC", description="Fake description...", @@ -694,7 +694,7 @@ def finding_type_kat_no_dnssec(): @pytest.fixture -def finding_type_kat_invalid_dnssec(): +def finding_type_kat_invalid_dnssec() -> KATFindingType: return KATFindingType( id="KAT-INVALID-DNSSEC", recommendation="Fake recommendation...", @@ -896,7 +896,7 @@ def mock_octopoes_api_connector(valid_time): @pytest.fixture -def listed_hostnames(network): +def listed_hostnames(network) -> list[Hostname]: return [ Hostname(network=network.reference, name="example.com"), Hostname(network=network.reference, name="a.example.com"), From 0dba8f28abb85c82a95254176445d75cb58db421 Mon Sep 17 00:00:00 2001 From: originalsouth Date: Tue, 27 Feb 2024 12:58:44 +0100 Subject: [PATCH 72/85] Fix/2527 octopoes unicode (#2558) Co-authored-by: Jan Klopper --- octopoes/octopoes/connector/octopoes.py | 25 ++++++- octopoes/octopoes/models/ooi/dns/zone.py | 2 + octopoes/octopoes/xtdb/client.py | 4 +- octopoes/tests/integration/test_unicode.py | 87 ++++++++++++++++++++++ 4 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 octopoes/tests/integration/test_unicode.py diff --git a/octopoes/octopoes/connector/octopoes.py b/octopoes/octopoes/connector/octopoes.py index 6961da6cb2e..cbd79d2cc60 100644 --- a/octopoes/octopoes/connector/octopoes.py +++ b/octopoes/octopoes/connector/octopoes.py @@ -170,17 +170,34 @@ def list_origins( return TypeAdapter(list[Origin]).validate_json(res.content) def save_observation(self, observation: Observation) -> None: - self.session.post(f"/{self.client}/observations", data=observation.model_dump_json()) + self.session.post( + f"/{self.client}/observations", + headers={"Content-Type": "application/json"}, + data=observation.model_dump_json().encode(), + ) def save_declaration(self, declaration: Declaration) -> None: - self.session.post(f"/{self.client}/declarations", data=declaration.model_dump_json()) + self.session.post( + f"/{self.client}/declarations", + headers={"Content-Type": "application/json"}, + data=declaration.model_dump_json().encode(), + ) def save_affirmation(self, affirmation: Affirmation) -> None: - self.session.post(f"/{self.client}/affirmations", data=affirmation.model_dump_json()) + self.session.post( + f"/{self.client}/affirmations", + headers={"Content-Type": "application/json"}, + data=affirmation.model_dump_json().encode(), + ) def save_scan_profile(self, scan_profile: ScanProfile, valid_time: datetime): params = {"valid_time": str(valid_time)} - self.session.put(f"/{self.client}/scan_profiles", params=params, data=scan_profile.model_dump_json()) + self.session.put( + f"/{self.client}/scan_profiles", + params=params, + headers={"Content-Type": "application/json"}, + data=scan_profile.model_dump_json().encode(), + ) def save_many_scan_profiles(self, scan_profiles: list[ScanProfile], valid_time: datetime) -> None: params = {"valid_time": str(valid_time)} diff --git a/octopoes/octopoes/models/ooi/dns/zone.py b/octopoes/octopoes/models/ooi/dns/zone.py index 07c77c06aef..1b4829467d3 100644 --- a/octopoes/octopoes/models/ooi/dns/zone.py +++ b/octopoes/octopoes/models/ooi/dns/zone.py @@ -50,6 +50,8 @@ class Hostname(OOI): @field_validator("name") @classmethod def hostname_valid(cls, v: str) -> str: + v = v.encode("idna").decode() + for c in v: if c not in VALID_HOSTNAME_CHARACTERS: raise ValueError(f"Invalid hostname character: {c}") diff --git a/octopoes/octopoes/xtdb/client.py b/octopoes/octopoes/xtdb/client.py index dd2ce2cc9dc..6090ecea4e4 100644 --- a/octopoes/octopoes/xtdb/client.py +++ b/octopoes/octopoes/xtdb/client.py @@ -131,7 +131,7 @@ def query(self, query: str | Query, valid_time: datetime | None = None) -> list[ res = self._session.post( f"{self.client_url()}/query", params={"valid-time": valid_time.isoformat()}, - data=str(query), + data=str(query).encode(), headers={"Content-Type": "application/edn"}, ) self._verify_response(res) @@ -144,7 +144,7 @@ def await_transaction(self, transaction_id: int) -> None: def submit_transaction(self, operations: list[Operation]) -> None: res = self._session.post( f"{self.client_url()}/submit-tx", - data=Transaction(operations=operations).json(by_alias=True), + data=Transaction(operations=operations).json(by_alias=True).encode(), headers={"Content-Type": "application/json"}, ) diff --git a/octopoes/tests/integration/test_unicode.py b/octopoes/tests/integration/test_unicode.py new file mode 100644 index 00000000000..b57bbc83895 --- /dev/null +++ b/octopoes/tests/integration/test_unicode.py @@ -0,0 +1,87 @@ +import os +import time +import uuid +from datetime import datetime + +import pytest + +from octopoes.api.models import Declaration, Observation +from octopoes.connector.octopoes import OctopoesAPIConnector +from octopoes.models import DeclaredScanProfile, ScanLevel +from octopoes.models.ooi.dns.zone import Hostname +from octopoes.models.ooi.network import Network +from octopoes.models.origin import OriginType + +if os.environ.get("CI") != "1": + pytest.skip("Needs XTDB multinode container.", allow_module_level=True) + +NAMES = ["🐱", "★.com", "🐈"] + + +def test_unicode_network(octopoes_api_connector: OctopoesAPIConnector, valid_time: datetime): + network = Network(name=NAMES[0]) + octopoes_api_connector.save_declaration( + Declaration( + ooi=network, + valid_time=valid_time, + ) + ) + + time.sleep(1) + + assert octopoes_api_connector.list_objects(types={Network}, valid_time=valid_time).count == 1 + network_object = octopoes_api_connector.list_objects(types={Network}, valid_time=valid_time).items[0] + assert network_object.name == NAMES[0] + assert network_object.reference == network.reference + + +def test_unicode_hostname(octopoes_api_connector: OctopoesAPIConnector, valid_time: datetime): + network = Network(name=NAMES[0]) + octopoes_api_connector.save_declaration( + Declaration( + ooi=network, + valid_time=valid_time, + ) + ) + + with pytest.raises(ValueError): + Hostname(network=network.reference, name="%@.com") + + hostname = Hostname(network=network.reference, name=NAMES[1]) + task_id = uuid.uuid4() + + octopoes_api_connector.save_observation( + Observation( + method=NAMES[2], + source=network.reference, + task_id=task_id, + valid_time=valid_time, + result=[hostname], + ) + ) + + scan_profile = DeclaredScanProfile(reference=hostname.reference, level=ScanLevel.L2) + octopoes_api_connector.save_scan_profile(scan_profile, valid_time) + + time.sleep(1) + + assert octopoes_api_connector.list_objects(types={Network, Hostname}, valid_time=valid_time).count == 2 + + network_object = octopoes_api_connector.list_objects(types={Network}, valid_time=valid_time).items[0] + assert network_object.name == NAMES[0] + assert network_object.reference == network.reference + + hostname_object = octopoes_api_connector.list_objects(types={Hostname}, valid_time=valid_time).items[0] + assert hostname_object.name == NAMES[1].encode("idna").decode() + assert hostname_object.reference == hostname.reference + + origins = octopoes_api_connector.list_origins(task_id=task_id, valid_time=valid_time) + assert origins[0].dict() == { + "method": NAMES[2], + "origin_type": OriginType.OBSERVATION, + "source": network.reference, + "result": [hostname.reference], + "task_id": task_id, + } + + assert len(octopoes_api_connector.list_origins(result=hostname.reference, valid_time=valid_time)) == 1 From c3d7f69486672bca0cf20fbb37a83238017820cd Mon Sep 17 00:00:00 2001 From: Madelon Dohmen <99282220+madelondohmen@users.noreply.github.com> Date: Tue, 27 Feb 2024 13:25:32 +0100 Subject: [PATCH 73/85] Quick fix for PDF table overflow (#2562) Co-authored-by: Jan Klopper --- .../weasyprint/pdf-overrides.scss | 6 +-- .../vulnerability_report/report.html | 47 ++++++++++--------- .../vulnerability_report/report.py | 2 +- rocky/rocky/locale/django.pot | 6 ++- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/rocky/assets/css/vendor_overrides/weasyprint/pdf-overrides.scss b/rocky/assets/css/vendor_overrides/weasyprint/pdf-overrides.scss index 0502ea46eca..27960aed53f 100644 --- a/rocky/assets/css/vendor_overrides/weasyprint/pdf-overrides.scss +++ b/rocky/assets/css/vendor_overrides/weasyprint/pdf-overrides.scss @@ -23,13 +23,13 @@ @import "table-of-contents"; :root { - --text-set-font-size: 12pt; + --text-set-font-size: 9pt; --body-text-large-font-size: 15pt; --heading-xxl-font-size: 26pt; --heading-xl-font-size: 20pt; --heading-large-font-size: 18pt; - --table-font-size: 10pt; - --table-head-cell-font-size: 12pt; + --table-font-size: 9pt; + --table-head-cell-font-size: 10pt; } body > main > section.dividing-line { diff --git a/rocky/reports/report_types/vulnerability_report/report.html b/rocky/reports/report_types/vulnerability_report/report.html index 1ff2e6769d3..2e573ae39a7 100644 --- a/rocky/reports/report_types/vulnerability_report/report.html +++ b/rocky/reports/report_types/vulnerability_report/report.html @@ -57,31 +57,32 @@
  5. - {% for key, value in finding_details.items %} -
    +
    + {% for key, value in finding_details.items %}
    {{ key }}
    {% if key == "Evidence" %} - - {{ value }} - {% else %} - {{ value }} - {% endif %} -
    -
    -
    - {% endfor %} -
    -
  6. - {% endfor %} - - - - {% endfor %} - -
    {% translate "Objects:" %}
    - -{% endif %} -{% endfor %} + {{ value }} + {% else %} + {{ value }} + {% endif %} + + + {% endfor %} + + + + {% endfor %} + +

    +
    + {% else %} +

    {% translate "No findings have been found on this system." %}

    + {% endif %} + {% endfor %} {% endif %} diff --git a/rocky/reports/report_types/vulnerability_report/report.py b/rocky/reports/report_types/vulnerability_report/report.py index 6aa1bbb3ff3..e9d66577b69 100644 --- a/rocky/reports/report_types/vulnerability_report/report.py +++ b/rocky/reports/report_types/vulnerability_report/report.py @@ -118,7 +118,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> dict[str, dict[ evidence = origins[0].task_id if origins else "-" - filtered_findings[finding.primary_key] = { + filtered_findings[finding.human_readable] = { str(_("Source")): sources, str(_("First seen")): first_seen, str(_("Last seen")): "-", diff --git a/rocky/rocky/locale/django.pot b/rocky/rocky/locale/django.pot index 8142dedb1c1..cac61916a42 100644 --- a/rocky/rocky/locale/django.pot +++ b/rocky/rocky/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-22 06:44+0000\n" +"POT-Creation-Date: 2024-02-26 17:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3041,6 +3041,10 @@ msgstr "" msgid "Advice" msgstr "" +#: reports/report_types/vulnerability_report/report.html +msgid "No findings have been found on this system." +msgstr "" + #: reports/report_types/vulnerability_report/report.py msgid "Vulnerability Report" msgstr "" From 3a867af1ea8dbb7bc4ee603289bc4ccb662d041e Mon Sep 17 00:00:00 2001 From: zcrt <115991818+zcrt@users.noreply.github.com> Date: Wed, 28 Feb 2024 13:58:18 +0100 Subject: [PATCH 74/85] Add pool size config and logs (#2541) --- boefjes/boefjes/config.py | 4 ++++ boefjes/boefjes/sql/db.py | 9 ++++++--- bytes/bytes/config.py | 2 ++ bytes/bytes/database/db.py | 12 +++++++----- bytes/bytes/database/sql_meta_repository.py | 4 +++- bytes/tests/conftest.py | 8 ++++---- mula/scheduler/config/settings.py | 1 + mula/scheduler/storage/storage.py | 9 ++++++++- 8 files changed, 35 insertions(+), 14 deletions(-) diff --git a/boefjes/boefjes/config.py b/boefjes/boefjes/config.py index df4764e22a8..f870a66e777 100644 --- a/boefjes/boefjes/config.py +++ b/boefjes/boefjes/config.py @@ -68,6 +68,10 @@ class Settings(BaseSettings): validation_alias="KATALOGUS_DB_URI", ) + db_connection_pool_size: int = Field( + 16, description="Database connection pool size", validation_alias="KATALOGUS_DB_CONNECTION_POOL_SIZE" + ) + scheduler_api: AnyHttpUrl = Field( ..., examples=["http://localhost:8004"], description="Mula API URL", validation_alias="SCHEDULER_API" ) diff --git a/boefjes/boefjes/sql/db.py b/boefjes/boefjes/sql/db.py index ec467d087e2..90049986a13 100644 --- a/boefjes/boefjes/sql/db.py +++ b/boefjes/boefjes/sql/db.py @@ -16,11 +16,14 @@ @cache def get_engine() -> Engine: - logger.info("Connecting to database..") + """Returns database engine according to config settings.""" + db_uri = make_url(name_or_url=str(settings.katalogus_db_uri)) + db_uri_redacted = db_uri.render_as_string(hide_password=True) + logger.info("Connecting to database %s with pool size %s...", db_uri_redacted, settings.db_connection_pool_size) - engine = create_engine(make_url(str(settings.katalogus_db_uri)), pool_pre_ping=True, pool_size=25) + engine = create_engine(url=db_uri, pool_pre_ping=True, pool_size=settings.db_connection_pool_size) - logger.info("Connected to database") + logger.info("Connected to database %s", db_uri_redacted) return engine diff --git a/bytes/bytes/config.py b/bytes/bytes/config.py index 44b5928a2d5..e206c9ec5a1 100644 --- a/bytes/bytes/config.py +++ b/bytes/bytes/config.py @@ -136,6 +136,8 @@ class Settings(BaseSettings): None, description="OpenTelemetry endpoint", validation_alias="SPAN_EXPORT_GRPC_ENDPOINT" ) + db_connection_pool_size: int = Field(16, description="Database connection pool size") + model_config = SettingsConfigDict(env_prefix="BYTES_") @classmethod diff --git a/bytes/bytes/database/db.py b/bytes/bytes/database/db.py index acf9c33de88..369ff2345d6 100644 --- a/bytes/bytes/database/db.py +++ b/bytes/bytes/database/db.py @@ -2,7 +2,7 @@ from functools import lru_cache from sqlalchemy import create_engine -from sqlalchemy.engine import Engine +from sqlalchemy.engine import Engine, make_url from sqlalchemy.orm import declarative_base logger = logging.getLogger(__name__) @@ -11,11 +11,13 @@ @lru_cache(maxsize=1) -def get_engine(db_uri: str) -> Engine: - logger.info("Connecting to database..") +def get_engine(db_uri: str, pool_size: int) -> Engine: + """Returns database engine according to config settings.""" + db_uri_redacted = make_url(name_or_url=str(db_uri)).render_as_string(hide_password=True) + logger.info("Connecting to database %s with pool size %s...", db_uri_redacted, pool_size) - engine = create_engine(db_uri, pool_pre_ping=True, pool_size=25) + engine = create_engine(db_uri, pool_pre_ping=True, pool_size=pool_size) - logger.info("Connected to database") + logger.info("Connected to database %s.", db_uri_redacted) return engine diff --git a/bytes/bytes/database/sql_meta_repository.py b/bytes/bytes/database/sql_meta_repository.py index 77827993fbc..4faac6e4cab 100644 --- a/bytes/bytes/database/sql_meta_repository.py +++ b/bytes/bytes/database/sql_meta_repository.py @@ -208,7 +208,9 @@ def _get_or_create_signing_provider(self, signing_provider_url: str | None) -> S def create_meta_data_repository() -> Iterator[MetaDataRepository]: settings = get_settings() - session = sessionmaker(bind=get_engine(str(settings.db_uri)))() + session = sessionmaker( + bind=get_engine(db_uri=str(settings.db_uri), pool_size=int(settings.db_connection_pool_size)) + )() repository = SQLMetaDataRepository( session, create_raw_repository(settings), create_hash_repository(settings), settings ) diff --git a/bytes/tests/conftest.py b/bytes/tests/conftest.py index 252cf94e9a6..69474441feb 100644 --- a/bytes/tests/conftest.py +++ b/bytes/tests/conftest.py @@ -72,7 +72,7 @@ def meta_repository( alembicArgs = ["--config", "/app/bytes/bytes/alembic.ini", "--raiseerr", "upgrade", "head"] alembic.config.main(argv=alembicArgs) - engine = get_engine(str(settings.db_uri)) + engine = get_engine(db_uri=str(settings.db_uri), pool_size=settings.db_connection_pool_size) session = sessionmaker(bind=engine)() yield SQLMetaDataRepository(session, raw_repository, mock_hash_repository, settings) @@ -98,9 +98,9 @@ def bytes_api_client(settings) -> Iterator[BytesAPIClient]: yield client - sessionmaker(bind=get_engine(str(settings.db_uri)), autocommit=True)().execute( - ";".join([f"TRUNCATE TABLE {t} CASCADE" for t in SQL_BASE.metadata.tables]) - ) + sessionmaker( + bind=get_engine(str(settings.db_uri), pool_size=settings.db_connection_pool_size), autocommit=True + )().execute(";".join([f"TRUNCATE TABLE {t} CASCADE" for t in SQL_BASE.metadata.tables])) @pytest.fixture diff --git a/mula/scheduler/config/settings.py b/mula/scheduler/config/settings.py index 91c582639d1..809f4dd00bb 100644 --- a/mula/scheduler/config/settings.py +++ b/mula/scheduler/config/settings.py @@ -214,6 +214,7 @@ class Settings(BaseSettings): db_uri: PostgresDsn = Field( ..., example="postgresql://xx:xx@host:5432/scheduler", description="Scheduler Postgres DB URI" ) + db_connection_pool_size: int = Field(25, description="Database connection pool size") @classmethod def settings_customise_sources( diff --git a/mula/scheduler/storage/storage.py b/mula/scheduler/storage/storage.py index e40d5f1afeb..405090b72d3 100644 --- a/mula/scheduler/storage/storage.py +++ b/mula/scheduler/storage/storage.py @@ -5,6 +5,8 @@ import sqlalchemy +from scheduler.config import settings + logger = logging.getLogger(__name__) @@ -16,13 +18,18 @@ def __init__(self, dsn: str) -> None: serializer = partial(json.dumps, default=str) + db_uri_redacted = sqlalchemy.engine.make_url(name_or_url=str(dsn)).render_as_string(hide_password=True) + pool_size = settings.Settings().db_connection_pool_size + + logger.info("Connecting to database %s with pool size %s...", db_uri_redacted, pool_size) self.engine = sqlalchemy.create_engine( dsn, pool_pre_ping=True, - pool_size=25, + pool_size=pool_size, pool_recycle=300, json_serializer=serializer, ) + logger.info("Connected to database %s.", db_uri_redacted) if self.engine is None: raise Exception("Invalid datastore type") From d3f17e2da3f21eeb45f8bc54e0fd3579e6b475b4 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Wed, 28 Feb 2024 15:05:40 +0100 Subject: [PATCH 75/85] add unit test for web report (#2528) Co-authored-by: Jeroen Dekkers --- rocky/tests/conftest.py | 42 ++++++++- .../tests/reports/test_web_systems_report.py | 92 +++++++++++++++++++ 2 files changed, 133 insertions(+), 1 deletion(-) create mode 100644 rocky/tests/reports/test_web_systems_report.py diff --git a/rocky/tests/conftest.py b/rocky/tests/conftest.py index 29b10079747..ce290619f0d 100644 --- a/rocky/tests/conftest.py +++ b/rocky/tests/conftest.py @@ -25,8 +25,9 @@ from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.findings import CVEFindingType, Finding, KATFindingType, RiskLevelSeverity from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPPort, Network, Protocol -from octopoes.models.ooi.service import Service +from octopoes.models.ooi.service import IPService, Service from octopoes.models.ooi.software import Software +from octopoes.models.ooi.web import URL, SecurityTXT, Website from octopoes.models.origin import Origin, OriginType from octopoes.models.transaction import TransactionRecord from rocky.scheduler import Task @@ -453,11 +454,34 @@ def hostname(network) -> Hostname: return Hostname(name="example.com", network=network.reference) +@pytest.fixture +def url(network): + return URL(raw="https://example.com/", network=network.reference) + + +@pytest.fixture +def website(ip_service: IPService, hostname: Hostname): + return Website( + ip_service=ip_service.reference, + hostname=hostname.reference, + ) + + +@pytest.fixture +def security_txt(website: Website, url: URL): + return SecurityTXT(website=website.reference, url=url.reference, security_txt="example") + + @pytest.fixture def service() -> Service: return Service(name="domain") +@pytest.fixture +def ip_service(ip_port: IPPort, service: Service): + return IPService(ip_port=ip_port.reference, service=service.reference) + + @pytest.fixture def software() -> Software: return Software(name="DICOM") @@ -549,6 +573,22 @@ def finding() -> Finding: ) +@pytest.fixture +def web_report_finding_types(): + return [ + KATFindingType(id="KAT-NO-CSP"), + KATFindingType(id="KAT-CSP-VULNERABILITIES"), + KATFindingType(id="KAT-NO-HTTPS-REDIRECT"), + KATFindingType(id="KAT-NO-CERTIFICATE"), + KATFindingType(id="KAT-NO-SECURITY-TXT"), + KATFindingType(id="KAT-UNCOMMON-OPEN-PORT"), + KATFindingType(id="KAT-OPEN-SYSADMIN-PORT"), + KATFindingType(id="KAT-OPEN-DATABASE-PORT"), + KATFindingType(id="KAT-CERTIFICATE-EXPIRED"), + KATFindingType(id="KAT-CERTIFICATE-EXPIRING-SOON"), + ] + + @pytest.fixture def no_rpki_finding_type() -> KATFindingType: return KATFindingType(id="KAT-NO-RPKI") diff --git a/rocky/tests/reports/test_web_systems_report.py b/rocky/tests/reports/test_web_systems_report.py new file mode 100644 index 00000000000..fd7d3c986bc --- /dev/null +++ b/rocky/tests/reports/test_web_systems_report.py @@ -0,0 +1,92 @@ +from reports.report_types.web_system_report.report import WebSystemReport + + +def test_web_report_no_findings(mock_octopoes_api_connector, valid_time, hostname, security_txt): + mock_octopoes_api_connector.oois = { + hostname.reference: hostname, + } + mock_octopoes_api_connector.queries = { + "Hostname. Date: Wed, 28 Feb 2024 17:04:15 +0100 Subject: [PATCH 76/85] =?UTF-8?q?Updated=20findings=20database.=20Removed?= =?UTF-8?q?=20old=20findings,=20added=20Impact,=20Source=E2=80=A6=20(#2569?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: ammar92 --- .../kat_finding_types.json | 415 +++++++----------- 1 file changed, 169 insertions(+), 246 deletions(-) diff --git a/boefjes/boefjes/plugins/kat_kat_finding_types/kat_finding_types.json b/boefjes/boefjes/plugins/kat_kat_finding_types/kat_finding_types.json index 05e7fc1bcca..c55640f830f 100644 --- a/boefjes/boefjes/plugins/kat_kat_finding_types/kat_finding_types.json +++ b/boefjes/boefjes/plugins/kat_kat_finding_types/kat_finding_types.json @@ -1,63 +1,63 @@ { "KAT-NO-HSTS": { - "description": "The website does not use HTTP Strict Transport Security (HSTS). HSTS tells the browser to connect via a proper secured HTTPS connection to the website.", - "source": "https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security", + "description": "The website does not use HTTP Strict Transport Security (HSTS). HSTS ensures that browsers can only access the website using encryption (HTTPS).", + "source": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security", "risk": "medium", - "impact": "When a browser uses the HTTP protocol, the network connection is not encrypted, so computers in the chain between the web server and the browser can read the data traffic. This makes data and identity theft possible, as well as manipulating data traffic, allowing for all kinds of fraud scenarios. With HSTS, only HTTPS traffic to the website is accepted by the browser.", - "recommendation": "Set the Strict-Transport-Security HTTP header in all HTTP answers." + "impact": "Absence of the HSTS header allows clients to connect insecurely to the website. This may result in eavesdropping of (sensitive) data by an attacker. Enabling the HSTS header forces the web browser to choose HTTPS instead of HTTP", + "recommendation": "Configure the Strict-Transport-Security HTTP header for all websites." }, "KAT-NO-CSP": { - "description": "The website does not use a Content Security Policy configuration.", - "source": "https://en.wikipedia.org/wiki/Content_Security_Policy", + "description": "The website does not use a Content Security Policy (CSP) configuration. CSP is used to mitigate certain attacks, including loading malicious code (JavaScript) inside the users browser (XSS)", + "source": "https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP", "risk": "medium", "impact": "The usage possibility of JavaScript is not limited by the website. If the website contains a cross-site scripting vulnerability, then JavaScript code can be injected into the web page. This code is then executed by the browser of the victim. If a well-established Content Security Policy is active, the attacker can inject JavaScript code into the browser of the victim, but then the code will not get executed by the browser. A good configured Content Security Policy is a strong protection against cross-site scripting vulnerabilities.", - "recommendation": "1. Set the Content-Security-Policy HTTP header in all HTTP answers. 2. Make sure that when the Content Security Policy is violated by a browser, that this violation is logged and monitored. Point the content security violation variable report-uri to a server-side log script. Implement a process that periodically analyses these logs for programming errors and hack attacks." + "recommendation": "1. Set the Content-Security-Policy HTTP header in all HTTP answers. 2. Make sure that when the Content Security Policy is violated by a browser, that this violation is logged and monitored. Point the content security violation variable report-uri to a server-side log script. 3. Implement a process that periodically analyses these logs for programming errors and hack attacks." }, "KAT-NO-X-PERMITTED-CROSS-DOMAIN-POLICIES": { - "description": "The HTTP header X-Permitted-Cross-Domain- Policies is missing in HTTP responses.", - "source": "https://www.owasp.org/index.php/OWASP_Secure_Headers_Project#tab=Headers", + "description": "The HTTP header X-Permitted-Cross-Domain- Policies is missing in HTTP responses. This header is not officially supported by Mozilla MDN.", + "source": "https://owasp.org/www-project-secure-headers/#div-headers", "risk": "recommendation", "impact": "When the value of this header is not set to master- only, Adobe Flash or Adobe Acrobat (and possibly other software) can also look at cross-domain configuration files hosted at the web server.", - "recommendation": "Set the HTTP header X-Permitted-Cross- Domain-Policies: none in all HTTP responses. Use value master-only if a Flash or Acrobat cross- domain configuration file is used that is placed in the root of the web server" + "recommendation": "This header is not supported by default by Mozilla. If this header is required for your environment: Set the HTTP header X-Permitted-Cross- Domain-Policies: none in all HTTP responses. Use value master-only if a Flash or Acrobat cross- domain configuration file is used that is placed in the root of the web server" }, "KAT-NO-EXPLICIT-XSS-PROTECTION": { - "description": "The cross-site scripting filter of Internet Explorer, Chrome and Safari is not enabled explicitly.", - "source": "https://www.owasp.org/index.php/OWASP_Secure_Headers_Project#tab=Headers", + "description": "This is a deprecated header previously used to prevent against Cross-Site-Scripting attacks. Support in modern browsers could introduce XSS attacks again.", + "source": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection", "risk": "recommendation", "impact": "Reflected cross-site scripting attacks may not be blocked.", - "recommendation": "Set the HTTP header X-XSS-Protection: 1; mode=block in all HTTP answers." + "recommendation": "This header is deprecated and should not be used." }, "KAT-NO-X-FRAME-OPTIONS": { "description": "HTTP header 'X-Frame-Options' is missing. It is possible that the website can be loaded via an

    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 diff --git a/octopoes/docs/source/index.rst b/octopoes/docs/source/index.rst deleted file mode 100644 index 6df7d3483d1..00000000000 --- a/octopoes/docs/source/index.rst +++ /dev/null @@ -1,16 +0,0 @@ -Welcome to Octopoes's documentation! -==================================== - -.. toctree:: - :maxdepth: 4 - :caption: Contents: - - readme - _generated/modules - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` diff --git a/octopoes/docs/source/readme.md b/octopoes/docs/source/readme.md deleted file mode 100644 index 7036bb31e38..00000000000 --- a/octopoes/docs/source/readme.md +++ /dev/null @@ -1,464 +0,0 @@ -# Octopoes - -Octopoes is KAT's knowledge-graph. It stores the knowledge KAT has gathered about its domain. As Octopoes uses [XTDB](https://xtdb.com) for bi-temporal data-storage, Octopoes keeps the current state of the knowledge-graph, as well as a complete, queryable history of the knowledge-graph. - -## Instructions - -Install dependencies -```bash -python3 -m pip install -r requirements.txt -``` - -## Environment variables -```bash -export XTDB_URI="http://xtdb.local" -export QUEUE_URI="amqp://guest:guest@localhost:5672/%2fkat" - -# Optional -export LOG_CFG="logging.yml" -export QUEUE_NAME_OCTOPOES="octopoes" -``` - -### Run Octopoes API -```bash -python3 -m uvicorn octopoes.api.api:app [--port 8000] -``` - -### Run the event processor -```bash -python3 -m celery -A octopoes.tasks.tasks worker -B -s /tmp/celerybeat-schedule --loglevel=WARNING -``` -_Note: The `-B` flag instructs celery start the Celery Beat scheduler in the same process_ -_Note: The `-s` flag is used to specify the beat schedule location and should be writeable by the user the process runs in_ - - - -## Healthcheck -```bash -# Return XTDB connection info -curl http://localhost:8000/_dev/health -# Return some XTDB objects (or empty list []) -curl http://localhost:8000/_dev/objects - -# To request data for a different KAT-client: -curl http://localhost:8000/clientx/healthcheck -``` - - -## OOI -The domain of discourse, on which Octopoes operates, is described by the OOI datamodel. The OOI (Object of Interest) model is described by entities and relations between them. The OOI model is currently defined in Octopoes itself (module `octopoes.model.ooi`). However, it is planned to be defined in the Openkat schema registries, decoupling the applicable domain from the logic. - - -## Origin - -Each OOI must have an origin to exist in the knowledge-graph. Origins can be supplied to Octopoes in 3 ways: -- origin through declaration -- origin through observation -- origin through inference - -Each origin consists of: -- the identifier of the origin-method -- a source OOI -- a set of result OOIs -- additional metadata. E.g. the task-ID that made the observation - -## Origin through declaration -An OOI is declared to exist by a user of KAT. - -_In this case, OOI B is both source and result_ -```{mermaid} -flowchart RL - -D[Declaration D] - - subgraph result[ ] - B[OOI B] - end - -B-.source.-D -D-.result.- result -``` - -## Origin through observation -An observation is reported by a normalizer -- An observation has a key that identifies the normalizer -- An observation always has a source OOI -- An observation always has a (possibly empty) set of result OOIs -```{mermaid} -flowchart LR - -A[OOI A] -O["Observation O (OOI A)"] - - subgraph outp[ ] - B[OOI B] - C[OOI C] - end - -A-.source.-O -O-.result.- outp - -``` - -## Origin through inference -An object is inferred from other objects in the knowledge-graph. This is achieved by rules, declared in bits. A bit is a rule that is applied to a pattern in the knowledge-graph. - -```{mermaid} -flowchart TD - - subgraph pattern[ ] - direction TB - A[OOI A]---B[OOI B] - A---C[OOI C] - end - - subgraph result[ ] - direction RL - D[OOI D]---E[OOI E] - end - -BIT["Bit B (OOI A)"] - -A-.source.-BIT -pattern-.pattern.-BIT -BIT-.result.- result - -``` - - -## Graph mutations -Mutations can only be made by supplying an origin to Octopoes. This can be an origin through declaration, or origin through -observation. When, after an origin-update, an OOI is no longer referenced by any origin. The OOI will be deleted from the knowledge-graph. - -*Example:* observation O has result B and C -```{mermaid} -flowchart LR - -A[OOI A] -A-.source.-O -O["Observation O (OOI A)"] - -O-.result.- result - - subgraph result[ ] - direction LR - B[OOI B]---C[OOI C] - end -``` - -After a mutation, observation O has result B. -C is no longer referenced, and is deleted from the knowledge-graph. -```{mermaid} -flowchart LR - -A[OOI A] -O["Observation O (OOI A)"] - - subgraph result[ ] - direction LR - B[OOI B] - end - -C[OOI C]:::someclass - -A-.source.-O -O-.result.- result -B[OOI B]x--xC[OOI C] - -classDef someclass fill:#f96, color:#000, stroke:#000; -``` - -If C had been referenced by another origin, it would not have been deleted. - -_OOI C is not deleted, since it's still referenced by Observation P_ -```{mermaid} -flowchart LR - -A[OOI A] -O["Observation O (OOI A)"] -subgraph result[ ] - direction LR - B[OOI B] -end -C2[OOI C] - -A-.source.-O -O-.result.- result -B[OOI B]x--xC2 - -E[OOI E] -P["Observation P (OOI B)"] -subgraph result2[ ] - direction LR - D[OOI D]---C[OOI C] -end - -E-.source.-P -P-.result.- result2 -``` - -## Code Architecture -In high level, the code architecture is as follows: - -- _Origin gets reported to the API_ -- _API calls the service layer_ -- _Service layer calls the data layer_ -- _Data layer sends out a mutation event_ -- _Listener catches the mutation event_ -- _Listener calls service layer to process mutation_ -```{mermaid} -flowchart LR - -Listener -API -OctopoesService - - -API --> OctopoesService - -Listener --> OctopoesService -OctopoesService --> Repository - -Repository --> XTDB[(XTDB)] -Repository --> EventManager -EventManager --> Listener -``` - -### Sequence: save_origin -```{mermaid} -sequenceDiagram - -actor Client -participant API -participant OctopoesService -participant OriginRepository -participant OOIRepository -participant XTDB -participant EventManager - -Client ->>+ API: save_origin(origin, oois, valid_time, organisation) -API ->>+ OctopoesService: save_origin(origin, oois, valid_time) -OctopoesService ->>+ OriginRepository: save(origin, valid_time) -OriginRepository ->> XTDB: get(origin, valid_time) -OriginRepository ->> OriginRepository: compare(origin) -OriginRepository ->> XTDB: save(origin, valid_time) -OriginRepository ->> EventManager: publish( CREATE_ORIGIN ) -OriginRepository ->- OctopoesService: #nbsp -OctopoesService ->>+ OOIRepository: save(ooi, valid_time) -OOIRepository ->> XTDB: get(ooi, valid_time) -OOIRepository ->> OOIRepository: compare(ooi) -OOIRepository ->> XTDB: save(ooi, valid_time) -OOIRepository ->> EventManager: publish( UPDATE_OOI ) -OOIRepository ->- OctopoesService: #nbsp -OctopoesService ->- API: #nbsp -API ->- Client: #nbsp -``` -### Sequence: process update ooi -```{mermaid} -sequenceDiagram - -actor EventManager -participant Listener -participant OctopoesService -participant OriginRepository -participant XTDB - -EventManager ->>+ Listener: handle_event(event) -Listener ->> OctopoesService: handle_update_ooi(event, valid_time) -OctopoesService ->> OriginRepository: get_origin(event.origin, type=inference) -OriginRepository ->> OctopoesService: bits -loop bits - OctopoesService ->> OctopoesService: run_bit -end - -Listener ->>- EventManager: #nbsp -``` - -## Crux / XTDB -[Crux](https://opencrux.com/main/index.html) is the central database of OOIs within KAT. Crux is a graph-database that can store objects (schemalessly), while providing object history and audit-trail functionality out-of-the-box. The term *bitemporal* means it tracks every object on 2 time axis: valid-time and transaction-time. - -- Valid-time means the state of an object at a certain time *X* (mutable). -- Transaction-time means the state of an object with all transactions-processed until time *Y* (immutable) - -This is especially useful for forensics-type queries like: What was the state of an object at time *X (valid-time)*, with the information we had at time *Y (transaction-time)*. - -Good to know: Crux tracks the history of each object by its **primary key**. - -[Read more about Crux bitemporality](https://opencrux.com/articles/bitemporality.html) - -## OOI - -OOI objects are instances of relatively simple classes, which inherit from `OOIBase`. - -Because all OOIs are stored in Crux and Crux tracks object history by primary key, KAT defines a way to reliably determine the primary key of an object by its attributes. This is called the [natural key](https://en.wikipedia.org/wiki/Natural_key) of an object. - -The main advantage of this method, is that when enough attributes of an OOI are discovered, the primary key of this object is known. This allows reasoning about the exact same objects in several subsystems, without having to query a database. - -Consider this (oversimplified) Person class -```python -from octopoes.models import OOI - - -class Person(OOI): - name: str - last_name: str - age: int - - _natural_key_attributes: ['name', 'last_name'] - - -# 2 completely separate systems can instantiate the the following Person OOI: -john = Person(name='John', last_name='Doe', age=42) - - -# And without having to search this person in a central database, the primary key is known: -john.natural_key # 'John/Doe' -john.primary_key # 'Person/John/Doe' -``` -*Note that the primary key consists of the natural key prefixed by the OOI-type, to avoid PK collisions* - -## Relationships - -OOIs can be related to each other. At time of writing the OOI data structure looks like this: - -*Directional arrows indicate a foreign key pointing to referred object* -![KAT Data Structure](img/kat_data_structure.png "KAT Data Structure") - -In a one-to-many relationship (`A 1-* B`), the relationship is stored in B (**B points to A**). For example, an IP-address belongs to a Network. So the Network primary key is stored as a foreign key in the IP-address object. - -```python -from octopoes.models import OOI, Reference -class Network(OOI): - name: str - _natural_key_attrs = ['name'] - -class IpAddressV6(OOI): - Network: Reference[Network] - address: str - _natural_key_attrs = ['Network', 'address'] -``` - -## A few example records - -![KAT Data Example](img/kat_data_example.png "KAT Data Example") - -## OOI Reference - -Even though foreign keys are actually simple strings, for ease of use these strings are represented in Octopoes by a special `Reference` object. - -OOIRefs can be obtained in several ways. -```python -from octopoes.models import Reference -from octopoes.models.ooi.network import Network, IPAddressV6 - -# Through the .ref() method of an OOI instance -internet = Network(name='internet') -internet_ref = internet.reference - -# Or from string -internet_ref = Reference.from_str('Network|internet') - -# Create a related object with a ref -ip = IPAddressV6(network=internet_ref, address='2001:db8::1') -``` - -Since an OOIRef is a compound key, individual parts of the foreign key can be retrieved by the `parsed` property. -```python -from octopoes.models import Reference - -ref = Reference.from_str('IpPort|internet|2001:db8::1|tcp|5050') - -ref.tokenized.protocol # 'tcp' -ref.tokenized.port # '5050' -ref.tokenized.address.address # '2001:db8::1' -``` -![KAT Ref Example](img/kat_ref_example.png "KAT Ref Example") - -## Octopoes API - - - -### OctopoesAPIConnector -The OctopoesAPIConnector class provides a python interface for connecting with Octopoes API. - -## Abstract classes / subclassing -Relationships from an OOI class to another OOI class are inferred through its property types. It is -possible to define a relationship to an abstract class. - -For querying purposes and grouping purposes these abstract classes can also be used. - -```python -from octopoes.models import OOI, Reference -from octopoes.connector.octopoes import OctopoesAPIConnector - -# Define abstract class and subclasses -class IPAddress(OOI): - ... - -class IPAddressV4(IPAddress): - ... - -class IPAddressV6(IPAddress): - ... - - -# Relationships to abstract class -class IPPort(OOI): - address: Reference[IPAddress] # Any subclass of IPAddress (IPAddressV4, IPAddressV6) - protocol: str - port: int - - -class TagExample(OOI): - ooi: Reference[OOI] # Any subclass of OOI.. - tag: str - - -# Query abstract class -OctopoesAPIConnector('http://octopoes', '_dev').list({IPAddress}) -``` - -## Querying -Octopoes API uses the OOI model to construct Crux queries. For complex graph-querying, Crux's [pull-syntax](https://www.opencrux.com/reference/1.16.0/queries.html#pull) is used to build a query tree. Crux can join objects to properties which hold (lists of) foreign keys. - -Imagine a query "Give me IpAddressV4 with primary key ***X*** and all related objects **2** levels deep". - -What happens under the hood: - - A relation map is created with all OOI classes and their relations - - A query plan is created by traversing the relation map 2 levels deep. The queryplan is a tree of QueryNode objects - - The query plan is transformed into a Crux Datalog query, utilizing its pull syntax to join related objects - - -**Rules**: -A few rules come into play when planning the query. -- Relations are not traversed back through the previous relation. E.g.: - `IpAddressV4 -> IpPort -> IpAddressV4` -- Leaf nodes are OOI classes that have too many relations to effectively traverse if they are not the starting node. Currently these are `Network`, `Finding` and `Job` - -**Query Plan Visualization:** -The OOI class tree is traversed 2 levels deep. Bear in mind that both Finding and Job can be related to any OOI, so the following paths are valid: -``` -- IpAddressV4 -> Finding -- IpAddressV4 -> Job -- IpAddressV4 -> DnsARecord -> Finding -- IpAddressV4 -> DnsARecord -> Job -- IpAddressV4 -> IpPort -> Finding -- IpAddressV4 -> IpPort -> Job -- IpAddressV4 -> IpPort -> IpService -- IpAddressV4 -> DnsARecord -> Hostname -....etc -``` - -Hence the 1 and 2 levels markers on Finding and Job in the image below. -![KAT Query Plan](img/kat_query_plan.png "KAT Query Plan") - - - - - -## Tests - -The unit tests `octopoes/tests` are run using -```bash -python -m unittest discover octopoes/tests -``` diff --git a/octopoes/octopoes/api/router.py b/octopoes/octopoes/api/router.py index e34bc61a7ba..68b237e450a 100644 --- a/octopoes/octopoes/api/router.py +++ b/octopoes/octopoes/api/router.py @@ -38,7 +38,7 @@ from octopoes.models.types import type_by_name from octopoes.version import __version__ from octopoes.xtdb.client import XTDBSession -from octopoes.xtdb.exceptions import NoMultinode, XTDBException +from octopoes.xtdb.exceptions import XTDBException from octopoes.xtdb.query import Query as XTDBQuery logger = getLogger(__name__) @@ -82,7 +82,7 @@ def settings() -> Settings: def xtdb_session( client: str = Depends(extract_client), settings_: Settings = Depends(settings) ) -> Generator[XTDBSession, None, None]: - yield XTDBSession(get_xtdb_client(str(settings_.xtdb_uri), client, settings_.xtdb_type)) + yield XTDBSession(get_xtdb_client(str(settings_.xtdb_uri), client)) def octopoes_service( @@ -399,10 +399,6 @@ def create_node(xtdb_session_: XTDBSession = Depends(xtdb_session)) -> None: try: xtdb_session_.client.create_node() xtdb_session_.commit() - except NoMultinode: - raise HTTPException( - status_code=status.HTTP_501_NOT_IMPLEMENTED, detail="XTDB multinode is not set up for Octopoes." - ) except XTDBException as e: raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Creating node failed") from e @@ -412,10 +408,6 @@ def delete_node(xtdb_session_: XTDBSession = Depends(xtdb_session)) -> None: try: xtdb_session_.client.delete_node() xtdb_session_.commit() - except NoMultinode: - raise HTTPException( - status_code=status.HTTP_501_NOT_IMPLEMENTED, detail="XTDB multinode is not set up for Octopoes." - ) except XTDBException as e: raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Deleting node failed") from e diff --git a/octopoes/octopoes/config/settings.py b/octopoes/octopoes/config/settings.py index 9021db8470b..5c5857bff07 100644 --- a/octopoes/octopoes/config/settings.py +++ b/octopoes/octopoes/config/settings.py @@ -2,7 +2,6 @@ import logging import os -from enum import Enum from pathlib import Path from typing import Any, Dict, Optional, Set, Tuple, Type @@ -19,16 +18,9 @@ BASE_DIR = Path("../../../") -class XTDBType(Enum): - CRUX = "crux" - XTDB = "xtdb" - XTDB_MULTINODE = "xtdb-multinode" - - class BackwardsCompatibleEnvSettings(EnvSettingsSource): backwards_compatibility_mapping = { "LOG_CFG": "OCTOPOES_LOG_CFG", - "XTDB_TYPE": "OCTOPOES_XTDB_TYPE", } def __call__(self) -> Dict[str, Any]: @@ -57,12 +49,7 @@ class Settings(BaseSettings): # External services settings queue_uri: AmqpDsn = Field(..., examples=["amqp://"], description="KAT queue URI", validation_alias="QUEUE_URI") xtdb_uri: AnyHttpUrl = Field( - ..., examples=["http://crux:3000"], description="XTDB API", validation_alias="XTDB_URI" - ) - xtdb_type: XTDBType = Field( - XTDBType.XTDB_MULTINODE, - description="Determines how Octopoes will format documents' primary in serialization (crux.db/id vs xt/id)", - possible_values=["crux", "xtdb", "xtdb-multinode"], + ..., examples=["http://xtdb:3000"], description="XTDB API", validation_alias="XTDB_URI" ) katalogus_api: AnyHttpUrl = Field( diff --git a/octopoes/octopoes/core/app.py b/octopoes/octopoes/core/app.py index 9523ecc5911..514742a09e9 100644 --- a/octopoes/octopoes/core/app.py +++ b/octopoes/octopoes/core/app.py @@ -2,7 +2,7 @@ from amqp import AMQPError -from octopoes.config.settings import QUEUE_NAME_OCTOPOES, Settings, XTDBType +from octopoes.config.settings import QUEUE_NAME_OCTOPOES, Settings from octopoes.core.service import OctopoesService from octopoes.events.manager import EventManager, get_rabbit_channel from octopoes.repositories.ooi_repository import XTDBOOIRepository @@ -15,24 +15,10 @@ logger = logging.getLogger(__name__) -def get_xtdb_client(base_uri: str, client: str, xtdb_type: XTDBType) -> XTDBHTTPClient: - """Base URL setup: - - Xtdb-multinode: "{base_uri}/_xtdb/{client}" - - Old development setup: "{base_uri}/{_crux|_xtdb}" - - Old production setup: client proxy & "{base_uri}/{client}/{_crux|_xtdb}" - - Before we had xtdb-multinode we supported multiple organizations by running multiple XTDB with a reverse proxy in - front. This code can be removed once we no longer support that setup. - """ - +def get_xtdb_client(base_uri: str, client: str) -> XTDBHTTPClient: base_uri = base_uri.rstrip("/") - if xtdb_type == XTDBType.XTDB_MULTINODE: - return XTDBHTTPClient(f"{base_uri}/_xtdb", client, multinode=True) - if client != "_dev": - return XTDBHTTPClient(f"{base_uri}/{client}/_{xtdb_type.value}", client) - - return XTDBHTTPClient(f"{base_uri}/_{xtdb_type.value}", client) + return XTDBHTTPClient(f"{base_uri}/_xtdb", client) def close_rabbit_channel(queue_uri: str): @@ -48,10 +34,10 @@ def close_rabbit_channel(queue_uri: str): def bootstrap_octopoes(settings: Settings, client: str, xtdb_session: XTDBSession) -> OctopoesService: event_manager = EventManager(client, str(settings.queue_uri), celery_app, QUEUE_NAME_OCTOPOES) - ooi_repository = XTDBOOIRepository(event_manager, xtdb_session, settings.xtdb_type) - origin_repository = XTDBOriginRepository(event_manager, xtdb_session, settings.xtdb_type) - origin_param_repository = XTDBOriginParameterRepository(event_manager, xtdb_session, settings.xtdb_type) - scan_profile_repository = XTDBScanProfileRepository(event_manager, xtdb_session, settings.xtdb_type) + ooi_repository = XTDBOOIRepository(event_manager, xtdb_session) + origin_repository = XTDBOriginRepository(event_manager, xtdb_session) + origin_param_repository = XTDBOriginParameterRepository(event_manager, xtdb_session) + scan_profile_repository = XTDBScanProfileRepository(event_manager, xtdb_session) octopoes = OctopoesService(ooi_repository, origin_repository, origin_param_repository, scan_profile_repository) diff --git a/octopoes/octopoes/repositories/ooi_repository.py b/octopoes/octopoes/repositories/ooi_repository.py index 64c72805a3b..dd3ada84f2b 100644 --- a/octopoes/octopoes/repositories/ooi_repository.py +++ b/octopoes/octopoes/repositories/ooi_repository.py @@ -16,7 +16,6 @@ DEFAULT_OFFSET, DEFAULT_SCAN_LEVEL_FILTER, DEFAULT_SCAN_PROFILE_TYPE_FILTER, - XTDBType, ) from octopoes.events.events import OOIDBEvent, OperationType from octopoes.events.manager import EventManager @@ -191,20 +190,15 @@ def to_reference_node(self, pk_prefix: str) -> Optional[ReferenceNode]: class XTDBOOIRepository(OOIRepository): - xtdb_type: XTDBType = XTDBType.CRUX + pk_prefix = "xt/id" - def __init__(self, event_manager: EventManager, session: XTDBSession, xtdb_type: XTDBType): + def __init__(self, event_manager: EventManager, session: XTDBSession): super().__init__(event_manager) self.session = session - self.__class__.xtdb_type = xtdb_type def commit(self): self.session.commit() - @classmethod - def pk_prefix(cls): - return "crux.db/id" if cls.xtdb_type == XTDBType.CRUX else "xt/id" - @classmethod def serialize(cls, ooi: OOI) -> Dict[str, Any]: # export model with pydantic serializers @@ -215,18 +209,18 @@ def serialize(cls, ooi: OOI) -> Dict[str, Any]: export = {f"{ooi.__class__.__name__}/{key}": value for key, value in export.items() if value is not None} export["object_type"] = ooi.__class__.__name__ - export[cls.pk_prefix()] = ooi.primary_key + export[cls.pk_prefix] = ooi.primary_key return export @classmethod def deserialize(cls, data: Dict[str, Any]) -> OOI: if "object_type" not in data: - raise ValueError + raise ValueError("Data is missing object_type") # pop global attributes object_cls = type_by_name(data.pop("object_type")) - data.pop(cls.pk_prefix()) + data.pop(cls.pk_prefix) # remove type prefixes stripped = {key.split("/")[1]: value for key, value in data.items()} @@ -267,7 +261,7 @@ def get_history( def load_bulk(self, references: Set[Reference], valid_time: datetime) -> Dict[str, OOI]: ids = list(map(str, references)) - query = generate_pull_query(self.xtdb_type, FieldSet.ALL_FIELDS, {self.pk_prefix(): ids}) + query = generate_pull_query(FieldSet.ALL_FIELDS, {self.pk_prefix: ids}) res = self.session.client.query(query, valid_time) oois = [self.deserialize(x[0]) for x in res] return {ooi.primary_key: ooi for ooi in oois} @@ -344,7 +338,7 @@ def list_random( :find [(rand {amount} ?id)] :in [[_scan_level ...]] :where [ - [?e :crux.db/id ?id] + [?e :xt/id ?id] [?e :object_type] [?scan_profile :type "ScanProfile"] [?scan_profile :reference ?e] @@ -398,13 +392,11 @@ def _get_related_objects(self, references: Set[Reference], valid_time: Optional[ object_types=ooi_classes, ) field_node.build_tree(1) - query = generate_pull_query( - self.xtdb_type, FieldSet.ONLY_ID, {self.pk_prefix(): ooi_ids}, field_node=field_node - ) + query = generate_pull_query(FieldSet.ONLY_ID, {self.pk_prefix: ooi_ids}, field_node=field_node) res = self.session.client.query(query, valid_time=valid_time) res = [element[0] for element in res] xtdb_reference_root_nodes = TypeAdapter(List[XTDBReferenceNode]).validate_python(res) - return [x.to_reference_node(self.pk_prefix()) for x in xtdb_reference_root_nodes] + return [x.to_reference_node(self.pk_prefix) for x in xtdb_reference_root_nodes] def _get_tree_level( self, @@ -484,12 +476,12 @@ def construct_neighbour_query(cls, reference: Reference, paths: Optional[Set[Pat :query {{ :find [ (pull ?e [ - :crux.db/id + :xt/id {related_fields} ]) ] - :in [[ _crux_db_id ... ]] - :where [[?e :crux.db/id _crux_db_id]] + :in [[ _xt_id ... ]] + :where [[?e :xt/id _xt_id]] }} :in-args [["{reference}"]] }}""".format( @@ -507,12 +499,12 @@ def construct_neighbour_query_multi(cls, references: Set[Reference], paths: Set[ :query {{ :find [ (pull ?e [ - :crux.db/id + :xt/id {related_fields} ]) ] - :in [[ _crux_db_id ... ]] - :where [[?e :crux.db/id _crux_db_id]] + :in [[ _xt_id ... ]] + :where [[?e :xt/id _xt_id]] }} :in-args [[{reference}]] }}""".format( @@ -535,7 +527,7 @@ def get_neighbours( ret = {} for key, value in response_data.items(): - if key == "crux.db/id" or value == {}: + if key == "xt/id" or value == {}: continue path = Path([self.decode_segment(key)]) if isinstance(value, list): @@ -563,7 +555,7 @@ def list_neighbours(self, references: Set[Reference], paths: Set[Path], valid_ti else: neighbours.add(self.deserialize(value)) except ValueError: - # is not an error, old crux versions return the foreign key as a string, + # Is not an error, XTDB returns the foreign key as a string, # when related object is not found logger.info("Could not deserialize value [value=%s]", value) diff --git a/octopoes/octopoes/repositories/origin_parameter_repository.py b/octopoes/octopoes/repositories/origin_parameter_repository.py index e61961388be..f36853586ab 100644 --- a/octopoes/octopoes/repositories/origin_parameter_repository.py +++ b/octopoes/octopoes/repositories/origin_parameter_repository.py @@ -5,7 +5,6 @@ from requests import HTTPError -from octopoes.config.settings import XTDBType from octopoes.events.events import OperationType, OriginParameterDBEvent from octopoes.events.manager import EventManager from octopoes.models import Reference @@ -41,24 +40,19 @@ def list_by_reference(self, reference: Reference, valid_time: datetime) -> List[ class XTDBOriginParameterRepository(OriginParameterRepository): - xtdb_type: XTDBType = XTDBType.CRUX + pk_prefix = "xt/id" - def __init__(self, event_manager: EventManager, session: XTDBSession, xtdb_type: XTDBType): + def __init__(self, event_manager: EventManager, session: XTDBSession): super().__init__(event_manager) self.session = session - self.__class__.xtdb_type = xtdb_type def commit(self): self.session.commit() - @classmethod - def pk_prefix(cls): - return "crux.db/id" if cls.xtdb_type == XTDBType.CRUX else "xt/id" - @classmethod def serialize(cls, origin_parameter: OriginParameter) -> Dict[str, Any]: data = origin_parameter.dict() - data[cls.pk_prefix()] = origin_parameter.id + data[cls.pk_prefix] = origin_parameter.id data["type"] = origin_parameter.__class__.__name__ return data @@ -77,7 +71,6 @@ def get(self, origin_parameter_id: str, valid_time: datetime) -> OriginParameter def list_by_origin(self, origin_id: Set[str], valid_time: datetime) -> List[OriginParameter]: query = generate_pull_query( - self.xtdb_type, FieldSet.ALL_FIELDS, { "origin_id": origin_id, @@ -89,7 +82,6 @@ def list_by_origin(self, origin_id: Set[str], valid_time: datetime) -> List[Orig def list_by_reference(self, reference: Reference, valid_time: datetime): query = generate_pull_query( - self.xtdb_type, FieldSet.ALL_FIELDS, { "reference": str(reference), diff --git a/octopoes/octopoes/repositories/origin_repository.py b/octopoes/octopoes/repositories/origin_repository.py index fe8f0ac1495..d8740b0bf20 100644 --- a/octopoes/octopoes/repositories/origin_repository.py +++ b/octopoes/octopoes/repositories/origin_repository.py @@ -6,7 +6,6 @@ from requests import HTTPError -from octopoes.config.settings import XTDBType from octopoes.events.events import OperationType, OriginDBEvent from octopoes.events.manager import EventManager from octopoes.models import Reference @@ -47,24 +46,19 @@ def delete(self, origin: Origin, valid_time: datetime) -> None: class XTDBOriginRepository(OriginRepository): - xtdb_type: XTDBType = XTDBType.CRUX + pk_prefix = "xt/id" - def __init__(self, event_manager: EventManager, session: XTDBSession, xtdb_type: XTDBType): + def __init__(self, event_manager: EventManager, session: XTDBSession): super().__init__(event_manager) self.session = session - self.__class__.xtdb_type = xtdb_type def commit(self): self.session.commit() - @classmethod - def pk_prefix(cls): - return "crux.db/id" if cls.xtdb_type == XTDBType.CRUX else "xt/id" - @classmethod def serialize(cls, origin: Origin) -> Dict[str, Any]: data = origin.dict() - data[cls.pk_prefix()] = origin.id + data[cls.pk_prefix] = origin.id data["type"] = origin.__class__.__name__ return data @@ -96,7 +90,6 @@ def list( where_parameters["origin_type"] = origin_type.value query = generate_pull_query( - self.xtdb_type, FieldSet.ALL_FIELDS, where_parameters, ) diff --git a/octopoes/octopoes/repositories/scan_profile_repository.py b/octopoes/octopoes/repositories/scan_profile_repository.py index d5c45fcdc60..9a855fbc8dd 100644 --- a/octopoes/octopoes/repositories/scan_profile_repository.py +++ b/octopoes/octopoes/repositories/scan_profile_repository.py @@ -6,7 +6,6 @@ from pydantic import parse_obj_as from requests import HTTPError -from octopoes.config.settings import XTDBType from octopoes.events.events import OperationType, ScanProfileDBEvent from octopoes.events.manager import EventManager from octopoes.models import ( @@ -47,33 +46,25 @@ def get_bulk(self, references: Set[Reference], valid_time: datetime) -> List[Sca class XTDBScanProfileRepository(ScanProfileRepository): - xtdb_type: XTDBType = XTDBType.CRUX + object_type = "ScanProfile" + pk_prefix = "xt/id" - def __init__(self, event_manager: EventManager, session: XTDBSession, xtdb_type: XTDBType): + def __init__(self, event_manager: EventManager, session: XTDBSession): super().__init__(event_manager) self.session = session - self.__class__.xtdb_type = xtdb_type def commit(self): self.session.commit() - @classmethod - def pk_prefix(cls): - return "crux.db/id" if cls.xtdb_type == XTDBType.CRUX else "xt/id" - - @classmethod - def object_type(cls): - return "ScanProfile" - @classmethod def format_id(cls, ooi_reference: Reference): - return f"{cls.object_type()}|{ooi_reference}" + return f"{cls.object_type}|{ooi_reference}" @classmethod def serialize(cls, scan_profile: ScanProfile) -> Dict[str, Any]: data = scan_profile.dict() - data[cls.pk_prefix()] = cls.format_id(scan_profile.reference) - data["type"] = cls.object_type() + data[cls.pk_prefix] = cls.format_id(scan_profile.reference) + data["type"] = cls.object_type return data @classmethod @@ -81,11 +72,10 @@ def deserialize(cls, data: Dict[str, Any]) -> ScanProfileBase: return parse_obj_as(ScanProfile, data) def list(self, scan_profile_type: Optional[str], valid_time: datetime) -> List[ScanProfileBase]: - where = {"type": self.object_type()} + where = {"type": self.object_type} if scan_profile_type is not None: where["scan_profile_type"] = scan_profile_type query = generate_pull_query( - self.xtdb_type, FieldSet.ALL_FIELDS, where, ) @@ -131,6 +121,6 @@ def delete(self, scan_profile: ScanProfileBase, valid_time: datetime) -> None: def get_bulk(self, references: Set[Reference], valid_time: datetime) -> List[ScanProfileBase]: ids = list(map(str, references)) - query = generate_pull_query(self.xtdb_type, FieldSet.ALL_FIELDS, {"type": self.object_type(), "reference": ids}) + query = generate_pull_query(FieldSet.ALL_FIELDS, {"type": self.object_type, "reference": ids}) res = self.session.client.query(query, valid_time) return [self.deserialize(x[0]) for x in res] diff --git a/octopoes/octopoes/tasks/tasks.py b/octopoes/octopoes/tasks/tasks.py index 45745454920..8ac4d70ae92 100644 --- a/octopoes/octopoes/tasks/tasks.py +++ b/octopoes/octopoes/tasks/tasks.py @@ -49,7 +49,7 @@ def handle_event(event: Dict): try: parsed_event: DBEvent = TypeAdapter(DBEventType).validate_python(event) - session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), parsed_event.client, settings.xtdb_type)) + session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), parsed_event.client)) bootstrap_octopoes(settings, parsed_event.client, session).process_event(parsed_event) session.commit() except Exception: @@ -77,7 +77,7 @@ def schedule_scan_profile_recalculations(): @app.task(queue=QUEUE_NAME_OCTOPOES) def recalculate_scan_profiles(org: str, *args, **kwargs): - session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), org, settings.xtdb_type)) + session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), org)) octopoes = bootstrap_octopoes(settings, org, session) timer = timeit.default_timer() diff --git a/octopoes/octopoes/xtdb/client.py b/octopoes/octopoes/xtdb/client.py index d036ac459f4..719203f62bb 100644 --- a/octopoes/octopoes/xtdb/client.py +++ b/octopoes/octopoes/xtdb/client.py @@ -10,7 +10,7 @@ from requests import HTTPError, Response from octopoes.models.transaction import TransactionRecord -from octopoes.xtdb.exceptions import NodeNotFound, NoMultinode, XTDBException +from octopoes.xtdb.exceptions import NodeNotFound, XTDBException from octopoes.xtdb.query import Query logger = logging.getLogger(__name__) @@ -59,9 +59,8 @@ def get_xtdb_http_session(base_url): class XTDBHTTPClient: - def __init__(self, base_url, client: str, multinode=False): + def __init__(self, base_url, client: str): self._client = client - self._is_multinode = multinode self._session = get_xtdb_http_session(base_url.rstrip("/")) @staticmethod @@ -76,9 +75,6 @@ def _verify_response(response: Response) -> None: raise e def client_url(self) -> str: - if not self._is_multinode: - return "" - return f"/{self._client}" def status(self) -> XTDBStatus: @@ -155,9 +151,6 @@ def submit_transaction(self, operations: List[Operation]) -> None: self.await_transaction(res.json()["txId"]) def create_node(self) -> None: - if not self._is_multinode: - raise NoMultinode("Creating nodes requires XTDB multinode") - try: res = self._session.post("/create-node", json={"node": self._client}) self._verify_response(res) @@ -166,9 +159,6 @@ def create_node(self) -> None: raise XTDBException("Could not create node") from e def delete_node(self) -> None: - if not self._is_multinode: - raise NoMultinode("Deleting nodes requires XTDB multinode") - try: res = self._session.post("/delete-node", json={"node": self._client}) self._verify_response(res) diff --git a/octopoes/octopoes/xtdb/exceptions.py b/octopoes/octopoes/xtdb/exceptions.py index c375e11136a..767df23aacc 100644 --- a/octopoes/octopoes/xtdb/exceptions.py +++ b/octopoes/octopoes/xtdb/exceptions.py @@ -2,9 +2,5 @@ class XTDBException(Exception): """Base exception for XTDB errors.""" -class NoMultinode(XTDBException): - """Kat is not set up with XTDB multinode""" - - class NodeNotFound(XTDBException): """The XTDB node was not found""" diff --git a/octopoes/octopoes/xtdb/query_builder.py b/octopoes/octopoes/xtdb/query_builder.py index 0e58bf0822e..074ca9b60a5 100644 --- a/octopoes/octopoes/xtdb/query_builder.py +++ b/octopoes/octopoes/xtdb/query_builder.py @@ -1,7 +1,6 @@ import re from typing import Dict, Iterator, List, Optional, Set, Union -from octopoes.config.settings import XTDBType from octopoes.xtdb.related_field_generator import ( FieldSet, RelatedFieldNode, @@ -20,14 +19,13 @@ def str_val(val): def generate_pull_query( - xtdb_type: XTDBType, field_set: Optional[FieldSet] = FieldSet.ALL_FIELDS, where: Optional[Dict[str, Union[str, int, List[Union[str, int]], Set[Union[str, int]]]]] = None, offset: Optional[int] = None, limit: Optional[int] = None, field_node: Optional[RelatedFieldNode] = None, ) -> str: - pk_prefix = ":crux.db/id" if xtdb_type == XTDBType.CRUX else ":xt/id" + pk_prefix = ":xt/id" in_params = [] in_args = [] diff --git a/octopoes/octopoes/xtdb/related_field_generator.py b/octopoes/octopoes/xtdb/related_field_generator.py index df749446ae3..619068806a1 100644 --- a/octopoes/octopoes/xtdb/related_field_generator.py +++ b/octopoes/octopoes/xtdb/related_field_generator.py @@ -84,7 +84,7 @@ def build_tree(self, depth: int): def generate_field(self, field_set: FieldSet, pk_prefix: str): queried_fields = pk_prefix if field_set is FieldSet.ONLY_ID else "*" """ - Output dicts in Crux Query Language + Output dicts in XTDB Query Language """ if not self.relations_out and not self.relations_in: return f"[{queried_fields}]" diff --git a/octopoes/tests/conftest.py b/octopoes/tests/conftest.py index 63372e33adc..4f0680e01bb 100644 --- a/octopoes/tests/conftest.py +++ b/octopoes/tests/conftest.py @@ -8,9 +8,7 @@ from bits.runner import BitRunner from requests.adapters import HTTPAdapter, Retry -from octopoes.api.api import app -from octopoes.api.router import settings -from octopoes.config.settings import Settings, XTDBType +from octopoes.config.settings import Settings from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.core.app import get_xtdb_client from octopoes.core.service import OctopoesService @@ -199,17 +197,6 @@ def declared_scan_profile(): return DeclaredScanProfile(reference="test_reference", level=2) -@pytest.fixture -def xtdbtype_crux(): - def get_settings_override(): - return Settings(xtdb_type=XTDBType.CRUX) - - overrides = app.dependency_overrides.copy() - app.dependency_overrides[settings] = get_settings_override - yield - app.dependency_overrides = overrides - - @pytest.fixture def app_settings(): return Settings() @@ -228,7 +215,7 @@ def bit_runner(mocker) -> BitRunner: @pytest.fixture def xtdb_http_client(request, app_settings: Settings) -> XTDBHTTPClient: test_node = f"test-{request.node.originalname}" - client = get_xtdb_client(str(app_settings.xtdb_uri), test_node, app_settings.xtdb_type) + client = get_xtdb_client(str(app_settings.xtdb_uri), test_node) client._session.mount("http://", HTTPAdapter(max_retries=Retry(total=3, backoff_factor=1))) return client @@ -253,12 +240,12 @@ def octopoes_api_connector(xtdb_session: XTDBSession) -> OctopoesAPIConnector: @pytest.fixture def xtdb_ooi_repository(xtdb_session: XTDBSession) -> Iterator[XTDBOOIRepository]: - yield XTDBOOIRepository(Mock(spec=EventManager), xtdb_session, XTDBType.XTDB_MULTINODE) + yield XTDBOOIRepository(Mock(spec=EventManager), xtdb_session) @pytest.fixture def xtdb_origin_repository(xtdb_session: XTDBSession) -> Iterator[XTDBOOIRepository]: - yield XTDBOriginRepository(Mock(spec=EventManager), xtdb_session, XTDBType.XTDB_MULTINODE) + yield XTDBOriginRepository(Mock(spec=EventManager), xtdb_session) @pytest.fixture @@ -268,7 +255,7 @@ def mock_xtdb_session(): @pytest.fixture def origin_repository(mock_xtdb_session): - yield XTDBOriginRepository(Mock(spec=EventManager), mock_xtdb_session, XTDBType.XTDB_MULTINODE) + yield XTDBOriginRepository(Mock(spec=EventManager), mock_xtdb_session) def seed_system(xtdb_ooi_repository: XTDBOOIRepository, xtdb_origin_repository: XTDBOriginRepository, valid_time): diff --git a/octopoes/tests/integration/test_api_connector.py b/octopoes/tests/integration/test_api_connector.py index 86cd6fa0a83..630afb80bd9 100644 --- a/octopoes/tests/integration/test_api_connector.py +++ b/octopoes/tests/integration/test_api_connector.py @@ -7,7 +7,6 @@ import pytest from octopoes.api.models import Declaration, Observation -from octopoes.config.settings import XTDBType from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import OOI, DeclaredScanProfile, Reference, ScanLevel from octopoes.models.ooi.dns.records import DNSAAAARecord, DNSARecord, DNSMXRecord, DNSNSRecord @@ -16,15 +15,11 @@ from octopoes.models.ooi.service import IPService, Service from octopoes.models.ooi.web import Website from octopoes.models.origin import OriginType -from octopoes.repositories.ooi_repository import XTDBOOIRepository if os.environ.get("CI") != "1": pytest.skip("Needs XTDB multinode container.", allow_module_level=True) -XTDBOOIRepository.xtdb_type = XTDBType.XTDB_MULTINODE - - def test_bulk_operations(octopoes_api_connector: OctopoesAPIConnector, valid_time: datetime): network = Network(name="test") octopoes_api_connector.save_declaration( diff --git a/octopoes/tests/integration/test_ooi_repository.py b/octopoes/tests/integration/test_ooi_repository.py index 0f484565a6f..b62bad238c5 100644 --- a/octopoes/tests/integration/test_ooi_repository.py +++ b/octopoes/tests/integration/test_ooi_repository.py @@ -3,7 +3,6 @@ import pytest -from octopoes.config.settings import XTDBType from octopoes.models.ooi.network import Network from octopoes.models.pagination import Paginated from octopoes.repositories.ooi_repository import XTDBOOIRepository @@ -12,9 +11,6 @@ pytest.skip("Needs XTDB multinode container.", allow_module_level=True) -XTDBOOIRepository.xtdb_type = XTDBType.XTDB_MULTINODE - - def test_list_oois(xtdb_ooi_repository: XTDBOOIRepository, valid_time: datetime): xtdb_ooi_repository.save(Network(name="test"), valid_time) diff --git a/octopoes/tests/integration/test_xtdb_client.py b/octopoes/tests/integration/test_xtdb_client.py index e37615f1d01..c3b99132792 100644 --- a/octopoes/tests/integration/test_xtdb_client.py +++ b/octopoes/tests/integration/test_xtdb_client.py @@ -5,7 +5,6 @@ import pytest from requests import HTTPError -from octopoes.config.settings import XTDBType from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import Reference from octopoes.models.ooi.dns.zone import Hostname @@ -24,9 +23,6 @@ pytest.skip("Needs XTDB multinode container.", allow_module_level=True) -XTDBOOIRepository.xtdb_type = XTDBType.XTDB_MULTINODE - - def test_node_creation_and_deletion(xtdb_http_client: XTDBHTTPClient): xtdb_http_client.create_node() status = xtdb_http_client.status() diff --git a/octopoes/tests/robot/01_scan_profiles.robot b/octopoes/tests/robot/01_scan_profiles.robot index ea48090b7ba..34f247cd1d2 100644 --- a/octopoes/tests/robot/01_scan_profiles.robot +++ b/octopoes/tests/robot/01_scan_profiles.robot @@ -64,15 +64,10 @@ Empty Scan Profiles *** Keywords *** Setup Test - Start Monitoring ${QUEUE_URI} + robot.Setup Test Insert Normalizer Output Await Sync -Teardown Test - Cleanup - Await Sync - Stop Monitoring - Set Scan Profile To Empty [Arguments] ${reference} ${params} Get Valid Time Params diff --git a/octopoes/tests/robot/02_list_objects.robot b/octopoes/tests/robot/02_list_objects.robot index c73bbf7a3fc..f0023a38870 100644 --- a/octopoes/tests/robot/02_list_objects.robot +++ b/octopoes/tests/robot/02_list_objects.robot @@ -37,14 +37,6 @@ Load Bulk *** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Cleanup - Await Sync - Stop Monitoring - Verify Object List With Filter ${response_data} Get Objects With ScanLevel 0 Should Be Equal ${response_data["count"]} ${6} diff --git a/octopoes/tests/robot/03_deletion_propagation.robot b/octopoes/tests/robot/03_deletion_propagation.robot index da792f98ffe..1bdd468ff6e 100644 --- a/octopoes/tests/robot/03_deletion_propagation.robot +++ b/octopoes/tests/robot/03_deletion_propagation.robot @@ -14,13 +14,6 @@ Propagate Deletion *** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Stop Monitoring - Cleanup - Object List Should Be Empty ${response_data} Get Objects Should Be Equal ${response_data["count"]} ${0} diff --git a/octopoes/tests/robot/04_save_declaration.robot b/octopoes/tests/robot/04_save_declaration.robot index 7b201062fb2..a8fd81d411b 100644 --- a/octopoes/tests/robot/04_save_declaration.robot +++ b/octopoes/tests/robot/04_save_declaration.robot @@ -18,13 +18,6 @@ Add Several Append Origins *** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Stop Monitoring - Cleanup - Verify Origin Present [Arguments] ${reference} ${origin_task_id} ${response} Get ${OCTOPOES_URI}/origins params=result=${reference} diff --git a/octopoes/tests/robot/05_bits.robot b/octopoes/tests/robot/05_bits.robot index 49ca8e62b48..949a0c52488 100644 --- a/octopoes/tests/robot/05_bits.robot +++ b/octopoes/tests/robot/05_bits.robot @@ -17,12 +17,3 @@ Bit With Scan Level 1 Declare Scan Profile Hostname|internet|example.com 0 Await Sync Object List Should Not Contain Finding|Hostname|internet|example.com|KAT-NXDOMAIN - - -*** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Stop Monitoring - Cleanup diff --git a/octopoes/tests/robot/06_scan_profile_inheritance.robot b/octopoes/tests/robot/06_scan_profile_inheritance.robot index b8c840aad2e..c7c21faa46e 100644 --- a/octopoes/tests/robot/06_scan_profile_inheritance.robot +++ b/octopoes/tests/robot/06_scan_profile_inheritance.robot @@ -15,15 +15,10 @@ Simple Scan Profile Inheritance *** Keywords *** Setup Test - Start Monitoring ${QUEUE_URI} + robot.Setup Test Insert Normalizer Output Await Sync -Teardown Test - Cleanup - Await Sync - Stop Monitoring - Get Scan Profile Inheritance [Arguments] ${reference} ${response} Get ${OCTOPOES_URI}/scan_profiles/inheritance params=reference=${reference} diff --git a/octopoes/tests/robot/07_bit_configs.robot b/octopoes/tests/robot/07_bit_configs.robot index bfca98d5b53..b49b345893c 100644 --- a/octopoes/tests/robot/07_bit_configs.robot +++ b/octopoes/tests/robot/07_bit_configs.robot @@ -27,13 +27,3 @@ HSTS Header Without Config Await Sync Recalculate Scan Profiles Verify Object Not Present ${REF_HSTS_FINDING} - - -*** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Cleanup - Await Sync - Stop Monitoring diff --git a/octopoes/tests/robot/07_rerun_bits.robot b/octopoes/tests/robot/07_rerun_bits.robot index d4ae5518b67..358ad5e727d 100644 --- a/octopoes/tests/robot/07_rerun_bits.robot +++ b/octopoes/tests/robot/07_rerun_bits.robot @@ -16,21 +16,21 @@ Rerun bits Verify Origin Present Hostname|internet|example.com 2 # add the new bit to the bits folder and restart containers - ${container_id_worker} Run docker ps -aqf 'name=octopoes-octopoes_api_worker' + ${container_id_worker} Run docker ps -aqf 'name=octopoes-ci_octopoes_api_worker' Log ${container_id_worker} Run docker cp .ci/mock_bits/url_classification_mock ${container_id_worker}:app/octopoes/bits Run docker restart ${container_id_worker} ${container_id_api} Run - ... docker ps -aq --filter "name=octopoes-octopoes_api" | grep -v $(docker ps -aq --filter "name=octopoes-octopoes_api_worker") | awk '{print $1}' + ... docker ps -aq --filter "name=octopoes-ci_octopoes" | grep -v $(docker ps -aq --filter "name=octopoes-ci_octopoes_api_worker") | awk '{print $1}' Log ${container_id_api} Run docker cp .ci/mock_bits/url_classification_mock ${container_id_api}:app/octopoes/bits Run docker restart ${container_id_api} # wait until containers started up - Sleep 2s + Sleep 3s - # make suer that new origin still does not exist + # make sure that new origin still does not exist Await Sync Verify Origin Present Hostname|internet|example.com 2 @@ -40,14 +40,6 @@ Rerun bits *** Keywords *** -Setup Test - Start Monitoring ${QUEUE_URI} - -Teardown Test - Cleanup - Await Sync - Stop Monitoring - Verify Origin Present [Arguments] ${reference} ${expected_amout_of_origins} ${response} Get ${OCTOPOES_URI}/origins params=result=${reference} diff --git a/octopoes/tests/robot/08_findings.robot b/octopoes/tests/robot/08_findings.robot index 8e4d6511073..97ebf3aabca 100644 --- a/octopoes/tests/robot/08_findings.robot +++ b/octopoes/tests/robot/08_findings.robot @@ -23,15 +23,10 @@ List Findings *** Keywords *** Setup Test - Start Monitoring ${QUEUE_URI} + robot.Setup Test Insert Normalizer Output Await Sync -Teardown Test - Cleanup - Await Sync - Stop Monitoring - List Findings ${response} Get ${OCTOPOES_URI}/findings ${response_data} Set Variable ${response.json()} diff --git a/octopoes/tests/robot/robot.resource b/octopoes/tests/robot/robot.resource index 75642755f6e..dad126c52c3 100644 --- a/octopoes/tests/robot/robot.resource +++ b/octopoes/tests/robot/robot.resource @@ -12,10 +12,9 @@ ${REF_IPADDR} IPAddressV4|internet|1.1.1.1 ${REF_RESOLVEDHOSTNAME} ResolvedHostname|internet|example.com|internet|1.1.1.1 ${OCTOPOES_URI} http://localhost:29000/_dev -${XTDB_URI} http://localhost:29002/_xtdb +${XTDB_URI} http://localhost:29002/_xtdb/_dev ${QUEUE_URI} amqp://ci_user:ci_pass@localhost:29004/kat ${RABBIT_MQ_API_URI} http://ci_user:ci_pass@localhost:29003/api -${FLOWER_API_URI} http://localhost:5555/api ${VALID_TIME} 2022-01-01T00:00:00+00:00 ${SCAN_PROFILE_INCREMENT_QUEUE} _dev__scan_profile_increments @@ -95,12 +94,16 @@ Clear XTDB ${response} Post ${XTDB_URI}/submit-tx json=${transaction} headers=${headers} Wait For XTDB Synced -Cleanup - Clear XTDB - Wait For XTDB Synced +Setup Test + Create XTDB node + Start Monitoring ${QUEUE_URI} + +Teardown Test + Delete XTDB node Get Messages From Queue octopoes ack_requeue_false Get Messages From Queue ${SCAN_PROFILE_INCREMENT_QUEUE} ack_requeue_false Get Messages From Queue ${SCAN_PROFILE_MUTATION_QUEUE} ack_requeue_false + Stop Monitoring Await Sync Sleep 300ms @@ -161,3 +164,11 @@ Verify Object Present Verify Object Not Present [Arguments] ${reference} ${response} Get ${OCTOPOES_URI}/object params=reference=${reference} expected_status=404 + +Create XTDB node + ${response} Post ${OCTOPOES_URI}/node + Should Be Equal As Integers ${response.status_code} 200 + +Delete XTDB node + ${response} Delete ${OCTOPOES_URI}/node + Should Be Equal As Integers ${response.status_code} 200 diff --git a/octopoes/tests/robot/variables.py b/octopoes/tests/robot/variables.py deleted file mode 100644 index 781b0f7e108..00000000000 --- a/octopoes/tests/robot/variables.py +++ /dev/null @@ -1,21 +0,0 @@ -xtdb_itest_vars = { - "OCTOPOES_URI": "http://localhost:29000/_dev", - "XTDB_URI": "http://localhost:29002/_xtdb", - "QUEUE_URI": "amqp://ci_user:ci_pass@localhost:29004/kat", - "RABBIT_MQ_API_URI": "http://ci_user:ci_pass@localhost:29003/api", -} - -crux_itest_vars = { - "OCTOPOES_URI": "http://localhost:28000/_dev", - "XTDB_URI": "http://localhost:28002/_crux", - "QUEUE_URI": "amqp://ci_user:ci_pass@localhost:28004/kat", - "RABBIT_MQ_API_URI": "http://ci_user:ci_pass@localhost:28003/api", -} - - -def get_variables(env: str) -> dict: - if env == "xtdb": - return xtdb_itest_vars - elif env == "crux": - return crux_itest_vars - return {} diff --git a/octopoes/tests/test_api.py b/octopoes/tests/test_api.py index 14311c2c681..dfa177e9eff 100644 --- a/octopoes/tests/test_api.py +++ b/octopoes/tests/test_api.py @@ -15,19 +15,19 @@ def patch_pika(mocker): return mocker.patch("pika.BlockingConnection") -def test_health(requests_mock, patch_pika, xtdbtype_crux): - crux_status = { - "version": "21.05-1.17.0-beta", - "revision": None, - "indexVersion": 18, +def test_health(requests_mock, patch_pika): + xtdb_status = { + "version": "1.24.1", + "revision": "1164f9a3c7e36edbc026867945765fd4366c1731", + "indexVersion": 22, "consumerState": None, - "kvStore": "crux.mem_kv.MemKv", - "estimateNumKeys": 25, - "size": None, + "kvStore": "xtdb.rocksdb.RocksKv", + "estimateNumKeys": 525037, + "size": 35488019, } requests_mock.real_http = True - requests_mock.get("http://testxtdb:3000/_crux/status", json=crux_status, status_code=200) + requests_mock.get("http://testxtdb:3000/_xtdb/_dev/status", json=xtdb_status, status_code=200) response = client.get("/_dev/health") assert response.json() == { "service": "octopoes", @@ -38,8 +38,8 @@ def test_health(requests_mock, patch_pika, xtdbtype_crux): { "healthy": True, "service": "xtdb", - "version": "21.05-1.17.0-beta", - "additional": crux_status, + "version": "1.24.1", + "additional": xtdb_status, "results": [], }, ], @@ -49,7 +49,7 @@ def test_health(requests_mock, patch_pika, xtdbtype_crux): def test_health_no_xtdb_connection(requests_mock, patch_pika): requests_mock.real_http = True - requests_mock.get("http://testxtdb:3000/_crux/status", exc=requests.exceptions.ConnectTimeout) + requests_mock.get("http://testxtdb:3000/_xtdb/_dev/status", exc=requests.exceptions.ConnectTimeout) response = client.get("/_dev/health") assert response.json() == { "service": "octopoes", @@ -74,7 +74,7 @@ def test_openapi(): assert response.status_code == 200 -def test_get_scan_profiles(requests_mock, patch_pika, xtdbtype_crux): +def test_get_scan_profiles(requests_mock, patch_pika): requests_mock.real_http = True scan_profile = { "type": "ScanProfile", @@ -84,7 +84,7 @@ def test_get_scan_profiles(requests_mock, patch_pika, xtdbtype_crux): "xt/id": "ScanProfile|DNSZone|internet|mispo.es", } requests_mock.post( - "http://testxtdb:3000/_crux/query", + "http://testxtdb:3000/_xtdb/_dev/query", json=[[scan_profile]], status_code=200, ) @@ -93,19 +93,7 @@ def test_get_scan_profiles(requests_mock, patch_pika, xtdbtype_crux): assert response.json() == [{"level": 0, "reference": "Hostname|internet|mispo.es", "scan_profile_type": "empty"}] -def test_create_node(xtdbtype_crux): - res = client.post("/_dev/node") - assert res.status_code == 501 - assert res.json() == {"detail": "XTDB multinode is not set up for Octopoes."} - - -def test_delete_node(xtdbtype_crux): - res = client.delete("/_dev/node") - assert res.status_code == 501 - assert res.json() == {"detail": "XTDB multinode is not set up for Octopoes."} - - -def test_create_node_multinode(requests_mock): +def test_create_node(requests_mock): requests_mock.real_http = True requests_mock.post( "http://testxtdb:3000/_xtdb/create-node", @@ -116,7 +104,7 @@ def test_create_node_multinode(requests_mock): assert response.status_code == 200 -def test_delete_node_multinode(requests_mock): +def test_delete_node(requests_mock): requests_mock.real_http = True requests_mock.post( "http://testxtdb:3000/_xtdb/delete-node", @@ -127,7 +115,7 @@ def test_delete_node_multinode(requests_mock): assert response.status_code == 200 -def test_count_findings_by_severity(requests_mock, patch_pika, xtdbtype_crux, caplog): +def test_count_findings_by_severity(requests_mock, patch_pika, caplog): logger = logging.getLogger("octopoes") logger.propagate = True @@ -142,7 +130,7 @@ def test_count_findings_by_severity(requests_mock, patch_pika, xtdbtype_crux, ca "KATFindingType/description": "This hostname does not support a DKIM record.", "KATFindingType/primary_key": "KATFindingType|KAT-NO-DKIM", "KATFindingType/risk_score": 6.9, - "crux.db/id": "KATFindingType|KAT-NO-DKIM", + "xt/id": "KATFindingType|KAT-NO-DKIM", }, 1, ], @@ -154,7 +142,7 @@ def test_count_findings_by_severity(requests_mock, patch_pika, xtdbtype_crux, ca ] requests_mock.post( - "http://testxtdb:3000/_crux/query", + "http://testxtdb:3000/_xtdb/_dev/query", json=xt_response, status_code=200, ) diff --git a/octopoes/tests/test_ooi_repository.py b/octopoes/tests/test_ooi_repository.py index 44950c2dc4f..07b1b93271e 100644 --- a/octopoes/tests/test_ooi_repository.py +++ b/octopoes/tests/test_ooi_repository.py @@ -5,7 +5,6 @@ from unittest import TestCase from unittest.mock import Mock, patch -from octopoes.config.settings import XTDBType from octopoes.events.manager import EventManager from octopoes.models import OOI, Reference from octopoes.models.ooi.dns.zone import DNSZone @@ -21,7 +20,7 @@ class OOIRepositoryTest(TestCase): def setUp(self) -> None: self.event_manager = Mock(spec=EventManager) self.session = XTDBSession(Mock(spec=XTDBHTTPClient)) - self.repository = XTDBOOIRepository(self.event_manager, self.session, XTDBType.CRUX) + self.repository = XTDBOOIRepository(self.event_manager, self.session) def test_node_from_ooi(self): internet = Network(name="internet") @@ -29,7 +28,7 @@ def test_node_from_ooi(self): serial = self.repository.serialize(ip) self.assertEqual("Network|internet", serial["IPAddressV4/network"]) self.assertEqual("1.1.1.1", serial["IPAddressV4/address"]) - self.assertEqual("IPAddressV4|internet|1.1.1.1", serial["crux.db/id"]) + self.assertEqual("IPAddressV4|internet|1.1.1.1", serial["xt/id"]) self.assertNotIn("IPAddressV4/object_type", serial) def test_node_from_ooi_with_list(self): @@ -46,12 +45,12 @@ class TestOOIClass(OOI): ) serial = self.repository.serialize(test) self.assertEqual(["Network|internet", "Network|internet2"], serial["TestOOIClass/multiple_refs"]) - self.assertEqual("TestOOIClass|test_id", serial["crux.db/id"]) + self.assertEqual("TestOOIClass|test_id", serial["xt/id"]) def test_extract_node(self): internet = Network(name="internet") raw_node = { - "crux.db/id": "DNSZone|internet|test.nl", + "xt/id": "DNSZone|internet|test.nl", "object_type": "DNSZone", "DNSZone/object_type": "DNSZone", "DNSZone/hostname": "Hostname|internet|test.nl", @@ -73,15 +72,15 @@ def test_construct_neighbour_query(self): :query { :find [ (pull ?e [ - :crux.db/id + :xt/id {:MockIPPort/_address [*]} {:MockResolvedHostname/_address [*]} {:MockLabel/_ooi [*]} {:MockIPAddressV4/network [*]} ]) ] - :in [[ _crux_db_id ... ]] - :where [[?e :crux.db/id _crux_db_id]] + :in [[ _xt_id ... ]] + :where [[?e :xt/id _xt_id]] } :in-args [["MockIPAddressV4|internet|1.1.1.1"]] }""" @@ -121,10 +120,10 @@ def test_get_neighbours(self): "MockResolvedHostname/_hostname": { "MockResolvedHostname/address": "MockIPAddressV4|internet|1.1.1.1", "MockResolvedHostname/hostname": "MockHostname|internet|example.com", - "crux.db/id": "MockResolvedHostname|internet|example.com|internet|1.1.1.1", + "xt/id": "MockResolvedHostname|internet|example.com|internet|1.1.1.1", "object_type": "MockResolvedHostname", }, - "crux.db/id": "MockHostname|internet|example.com", + "xt/id": "MockHostname|internet|example.com", } ] ] diff --git a/octopoes/tests/test_query_builder_new.py b/octopoes/tests/test_query_builder_new.py index 596da3d1d69..2c5d5e39498 100644 --- a/octopoes/tests/test_query_builder_new.py +++ b/octopoes/tests/test_query_builder_new.py @@ -1,6 +1,5 @@ from unittest import TestCase -from octopoes.config.settings import XTDBType from octopoes.models.origin import Origin from octopoes.xtdb import ( Datamodel, @@ -197,9 +196,8 @@ def test_generate_query_sucess(self): field_node.build_tree(1) query = generate_pull_query( - XTDBType.CRUX, FieldSet.ALL_FIELDS, - {"db.crux/id": "IpAddressV4|internet|1.1.1.1"}, + {"xt/id": "IpAddressV4|internet|1.1.1.1"}, field_node=field_node, ) @@ -207,7 +205,7 @@ def test_generate_query_sucess(self): "{:query {:find [(pull ?e [* {(:DnsARecord/_IpAddressV4 {:as DnsARecord/_IpAddressV4}) [*]} " "{(:Finding/_OOI {:as Finding/_OOI}) [*]} {(:IpAddressV4/Network {:as Network}) [*]} " "{(:IpPort/_IpAddress {:as IpPort/_IpAddress}) [*]} {(:Job/_oois {:as Job/_oois}) [*]}])] " - ':in [_db_crux_id] :where [[?e :db.crux/id _db_crux_id]] } :in-args [ "IpAddressV4|internet|1.1.1.1" ]}' + ':in [_xt_id] :where [[?e :xt/id _xt_id]] } :in-args [ "IpAddressV4|internet|1.1.1.1" ]}' ) self.assertEqual( expected_query, @@ -216,7 +214,6 @@ def test_generate_query_sucess(self): def test_escape_injection_success(self): query = generate_pull_query( - XTDBType.CRUX, FieldSet.ALL_FIELDS, where={"attr_1": 'test_value_with_quotes" and injection'}, ) @@ -232,7 +229,6 @@ def test_escape_injection_success(self): def test_get_origin_by_task_id(self): query = generate_pull_query( - XTDBType.CRUX, FieldSet.ALL_FIELDS, { "task_id": "5c864d45a4364a81a5fecfd8b359cf9d", diff --git a/octopoes/tests/test_reference_node.py b/octopoes/tests/test_reference_node.py index 524dc88cf19..c3d616c108e 100644 --- a/octopoes/tests/test_reference_node.py +++ b/octopoes/tests/test_reference_node.py @@ -6,12 +6,12 @@ from octopoes.repositories.ooi_repository import XTDBReferenceNode xtdb_sample = { - "crux.db/id": "IPPort|internet|1.1.1.2|tcp|80", + "xt/id": "IPPort|internet|1.1.1.2|tcp|80", "IPPort/address": { - "crux.db/id": "IPAddressV4|internet|1.1.1.2", + "xt/id": "IPAddressV4|internet|1.1.1.2", "IPAddressV4/network": { - "crux.db/id": "Network|internet", - "IPAddressV6/_network": [{"crux.db/id": "IPAddressV6|internet|2001:1c00:2303:8f00:21c7:4dc2:5738:28af"}], + "xt/id": "Network|internet", + "IPAddressV6/_network": [{"xt/id": "IPAddressV6|internet|2001:1c00:2303:8f00:21c7:4dc2:5738:28af"}], }, }, } @@ -19,71 +19,71 @@ xtdb_sample_2 = { "child_dns_zones": [ { - "crux.db/id": "DNSZone|internet|minvws.nl", - "hostnames": [{"crux.db/id": "Hostname|internet|minvws.nl"}], + "xt/id": "DNSZone|internet|minvws.nl", + "hostnames": [{"xt/id": "Hostname|internet|minvws.nl"}], "name_servers": [ - {"crux.db/id": "Hostname|internet|ns3.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns2.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns1.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns3.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns2.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns1.ssonet.nl"}, ], - "network": {"crux.db/id": "Network|internet"}, - "soa": {"crux.db/id": "Hostname|internet|ns3.ssonet.nl"}, + "network": {"xt/id": "Network|internet"}, + "soa": {"xt/id": "Hostname|internet|ns3.ssonet.nl"}, } ], - "crux.db/id": "DNSZone|internet|nl", + "xt/id": "DNSZone|internet|nl", "name_servers": [ { - "crux.db/id": "Hostname|internet|ns3.dns.nl", + "xt/id": "Hostname|internet|ns3.dns.nl", "dns_zone": {}, - "network": {"crux.db/id": "Network|internet"}, + "network": {"xt/id": "Network|internet"}, }, { - "crux.db/id": "Hostname|internet|ns2.dns.nl", + "xt/id": "Hostname|internet|ns2.dns.nl", "dns_zone": {}, - "network": {"crux.db/id": "Network|internet"}, + "network": {"xt/id": "Network|internet"}, }, { - "crux.db/id": "Hostname|internet|ns1.dns.nl", + "xt/id": "Hostname|internet|ns1.dns.nl", "dns_zone": {}, - "dns_zones": [{"crux.db/id": "DNSZone|internet|nl"}], - "network": {"crux.db/id": "Network|internet"}, + "dns_zones": [{"xt/id": "DNSZone|internet|nl"}], + "network": {"xt/id": "Network|internet"}, }, ], "network": { - "crux.db/id": "Network|internet", + "xt/id": "Network|internet", "hostnames": [ - {"crux.db/id": "Hostname|internet|mail.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|mail2.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|minvws.nl"}, - {"crux.db/id": "Hostname|internet|ns1.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns1.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns2.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns2.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns3.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns3.ssonet.nl"}, + {"xt/id": "Hostname|internet|mail.ssonet.nl"}, + {"xt/id": "Hostname|internet|mail2.ssonet.nl"}, + {"xt/id": "Hostname|internet|minvws.nl"}, + {"xt/id": "Hostname|internet|ns1.dns.nl"}, + {"xt/id": "Hostname|internet|ns1.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns2.dns.nl"}, + {"xt/id": "Hostname|internet|ns2.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns3.dns.nl"}, + {"xt/id": "Hostname|internet|ns3.ssonet.nl"}, ], "ip_v4_addresses": [ - {"crux.db/id": "IPAddressV4|internet|1.1.1.1"}, - {"crux.db/id": "IPAddressV4|internet|147.181.98.150"}, + {"xt/id": "IPAddressV4|internet|1.1.1.1"}, + {"xt/id": "IPAddressV4|internet|147.181.98.150"}, ], }, "parent": { "hostnames": [ - {"crux.db/id": "Hostname|internet|mail.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|mail2.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns1.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns1.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns2.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns2.ssonet.nl"}, - {"crux.db/id": "Hostname|internet|ns3.dns.nl"}, - {"crux.db/id": "Hostname|internet|ns3.ssonet.nl"}, + {"xt/id": "Hostname|internet|mail.ssonet.nl"}, + {"xt/id": "Hostname|internet|mail2.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns1.dns.nl"}, + {"xt/id": "Hostname|internet|ns1.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns2.dns.nl"}, + {"xt/id": "Hostname|internet|ns2.ssonet.nl"}, + {"xt/id": "Hostname|internet|ns3.dns.nl"}, + {"xt/id": "Hostname|internet|ns3.ssonet.nl"}, ] }, "soa": { - "crux.db/id": "Hostname|internet|ns1.dns.nl", + "xt/id": "Hostname|internet|ns1.dns.nl", "dns_zone": {}, - "name_server_of": [{"crux.db/id": "DNSZone|internet|nl"}], - "network": {"crux.db/id": "Network|internet"}, + "name_server_of": [{"xt/id": "DNSZone|internet|nl"}], + "network": {"xt/id": "Network|internet"}, }, } @@ -105,7 +105,7 @@ def test_filter_children(self): def test_xtdb_reference_node_to_reference_node(self): root = XTDBReferenceNode.parse_obj(xtdb_sample) - reference_node = root.to_reference_node("crux.db/id") + reference_node = root.to_reference_node("xt/id") self.assertEqual( "IPAddressV6|internet|2001:1c00:2303:8f00:21c7:4dc2:5738:28af", str( @@ -125,12 +125,12 @@ def test_collect_references(self): } root = XTDBReferenceNode.parse_obj(xtdb_sample) - reference_node = root.to_reference_node("crux.db/id") + reference_node = root.to_reference_node("xt/id") self.assertEqual(refs, reference_node.collect_references()) def test_xtdb_data_to_reference_node_complext(self): root = XTDBReferenceNode.parse_obj(xtdb_sample_2) - reference_node = root.to_reference_node("crux.db/id") + reference_node = root.to_reference_node("xt/id") self.assertEqual("DNSZone|internet|nl", str(reference_node.reference)) diff --git a/octopoes/tests/test_scan_profile_repository.py b/octopoes/tests/test_scan_profile_repository.py index 90ac7cc6a5d..d73955666cf 100644 --- a/octopoes/tests/test_scan_profile_repository.py +++ b/octopoes/tests/test_scan_profile_repository.py @@ -23,7 +23,7 @@ def test_serialize_declared(self): serialized = XTDBScanProfileRepository.serialize(scan_profile) - self.assertEqual("ScanProfile|MockIPAddressV4|internet|1.1.1.1", serialized["crux.db/id"]) + self.assertEqual("ScanProfile|MockIPAddressV4|internet|1.1.1.1", serialized["xt/id"]) self.assertEqual("ScanProfile", serialized["type"]) self.assertEqual("declared", serialized["scan_profile_type"]) self.assertEqual(1, serialized["level"]) @@ -38,7 +38,7 @@ def test_serialize_inherited(self): ) serialized = XTDBScanProfileRepository.serialize(scan_profile) - self.assertEqual("ScanProfile|MockIPAddressV4|internet|1.1.1.1", serialized["crux.db/id"]) + self.assertEqual("ScanProfile|MockIPAddressV4|internet|1.1.1.1", serialized["xt/id"]) self.assertEqual("ScanProfile", serialized["type"]) self.assertEqual("inherited", serialized["scan_profile_type"]) self.assertEqual(2, serialized["level"]) @@ -50,7 +50,7 @@ def test_deserialize_declared( "reference": "MockIPAddressV4|internet|1.1.1.1", "level": 1, "scan_profile_type": "declared", - "crux.db/id": "ScanProfile|MockIPAddressV4|internet|1.1.1.1", + "xt/id": "ScanProfile|MockIPAddressV4|internet|1.1.1.1", "type": "ScanProfile", } scan_profile = XTDBScanProfileRepository.deserialize(serialized) @@ -66,7 +66,7 @@ def test_deserialize_inherited_legacy( "reference": "MockIPAddressV4|internet|1.1.1.2", "level": 2, "scan_profile_type": "inherited", - "crux.db/id": "ScanProfile|MockIPAddressV4|internet|1.1.1.1", + "xt/id": "ScanProfile|MockIPAddressV4|internet|1.1.1.1", "type": "ScanProfile", "inheritances": [ { diff --git a/octopoes/tools/run_bit.py b/octopoes/tools/run_bit.py index cd72d68f9e9..5e7def8865f 100755 --- a/octopoes/tools/run_bit.py +++ b/octopoes/tools/run_bit.py @@ -34,7 +34,7 @@ def run_bit(start_pdb, organization_code, bit_id, ooi): valid_time = datetime.now(timezone.utc) - session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), organization_code, settings.xtdb_type)) + session = XTDBSession(get_xtdb_client(str(settings.xtdb_uri), organization_code)) octopoes_service = bootstrap_octopoes(settings, organization_code, session) ooi_repository = octopoes_service.ooi_repository origin_repository = octopoes_service.origin_repository diff --git a/rocky/.ci/.env.test b/rocky/.ci/.env.test index 9837dee7838..0435988bdf3 100644 --- a/rocky/.ci/.env.test +++ b/rocky/.ci/.env.test @@ -25,8 +25,7 @@ BYTES_API=http://placeholder:8003 BYTES_USERNAME=username BYTES_PASSWORD=password -XTDB_URI=http://xtdb_multinode:3000 -OCTOPOES_XTDB_TYPE=xtdb-multinode +XTDB_URI=http://xtdb:3000 CI=1 RABBITMQ_DEFAULT_VHOST=kat diff --git a/rocky/.ci/docker-compose.yml b/rocky/.ci/docker-compose.yml index 9bc3dd5e435..12454eb6eaf 100644 --- a/rocky/.ci/docker-compose.yml +++ b/rocky/.ci/docker-compose.yml @@ -48,12 +48,12 @@ services: depends_on: rabbitmq: condition: service_healthy - xtdb_multinode: + xtdb: condition: service_started env_file: - .ci/.env.test - xtdb_multinode: + xtdb: image: "ghcr.io/dekkers/xtdb-http-multinode:v1.0.8" rabbitmq: diff --git a/rocky/assets/vendors/graph/js/graph-render.js b/rocky/assets/vendors/graph/js/graph-render.js index ecb9d54ce34..421abf14b7c 100644 --- a/rocky/assets/vendors/graph/js/graph-render.js +++ b/rocky/assets/vendors/graph/js/graph-render.js @@ -65,23 +65,23 @@ const plotData = (data) => { const elements = []; loopTree({}, data, (parent, obj) => { - if (obj["crux.db/id"]) { + if (obj["xt/id"]) { // add node to graph elements.push({ data: { - id: obj["crux.db/id"], - label: obj["crux.db/id"], + id: obj["xt/id"], + label: obj["xt/id"], type: obj["ooi_type"] || "default", }, }); - if (parent["crux.db/id"]) { + if (parent["xt/id"]) { // add edge to graph elements.push({ data: { - id: obj["crux.db/id"] + "_" + parent["crux.db/id"], - source: obj["crux.db/id"], - target: parent["crux.db/id"], + id: obj["xt/id"] + "_" + parent["xt/id"], + source: obj["xt/id"], + target: parent["xt/id"], type: obj["ooi_type"] || "default", }, }); @@ -132,14 +132,14 @@ const renderMenu = () => { * @returns */ const goToOoi = (ooiId) => { - const currentId = rootObj["crux.db/id"]; + const currentId = rootObj["xt/id"]; if (ooiId === currentId) { return; } window.location.href = window.location.href.replace( - rootObj["crux.db/id"], + rootObj["xt/id"], ooiId ); }; @@ -152,8 +152,8 @@ window.addEventListener("load", () => { // Gather all id's window.ooi = new Set(); loopTree({}, rootObj, (parent, obj) => { - if (obj["crux.db/id"]) { - window.ooi.add(obj["crux.db/id"]); + if (obj["xt/id"]) { + window.ooi.add(obj["xt/id"]); } }); renderMenu(); From 2581593c929641ecc409933a662da18527ad5b97 Mon Sep 17 00:00:00 2001 From: JP Bruins Slot Date: Thu, 1 Feb 2024 10:06:52 +0100 Subject: [PATCH 05/85] Fix normalizer filtering on tasks endpoint (#2414) --- mula/scheduler/server/server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mula/scheduler/server/server.py b/mula/scheduler/server/server.py index e7c47db3a61..4133b43b456 100644 --- a/mula/scheduler/server/server.py +++ b/mula/scheduler/server/server.py @@ -360,7 +360,7 @@ def list_tasks( elif task_type == "normalizer": f_plugin = storage.filters.Filter( column="p_item", - field="data__raw_data__boefje_meta__id", + field="data__normalizer__id", operator="eq", value=plugin_id, ) @@ -375,7 +375,7 @@ def list_tasks( ), storage.filters.Filter( column="p_item", - field="data__raw_data__boefje_meta__id", + field="data__normalizer__id", operator="eq", value=plugin_id, ), From ff2d323b2dfb9a67c58198a3273fa3a6299f9a03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:50:33 +0100 Subject: [PATCH 06/85] Bump actions/cache from 3 to 4 (#2417) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/pre_commit_checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pre_commit_checks.yml b/.github/workflows/pre_commit_checks.yml index 452a47a8772..16dbbb388bb 100644 --- a/.github/workflows/pre_commit_checks.yml +++ b/.github/workflows/pre_commit_checks.yml @@ -25,7 +25,7 @@ jobs: - name: Install pre-commit run: pip install pre-commit==3.6.0 - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: ~/.cache/pre-commit key: pre-commit|${{ steps.py311.outputs.python-version }}|${{ hashFiles('.pre-commit-config.yaml') }} From fc6eb2be58bcabfbacccb8601e39c6c3832025ab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:56:25 +0100 Subject: [PATCH 07/85] Bump dorny/paths-filter from 2 to 3 (#2418) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/debian_package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/debian_package.yml b/.github/workflows/debian_package.yml index caca8653f72..725274e7d4b 100644 --- a/.github/workflows/debian_package.yml +++ b/.github/workflows/debian_package.yml @@ -15,7 +15,7 @@ jobs: outputs: packages: ${{ steps.filter.outputs.changes }} steps: - - uses: dorny/paths-filter@v2 + - uses: dorny/paths-filter@v3 if: github.event_name != 'push' id: filter with: From d2276d9374daf49dc03ba13b6c26f3093a47235d Mon Sep 17 00:00:00 2001 From: ammar92 Date: Fri, 2 Feb 2024 12:29:07 +0100 Subject: [PATCH 08/85] Fix usage of `SPAN_EXPORT_GRPC_ENDPOINT` variable (#2420) --- boefjes/boefjes/katalogus/api.py | 2 +- bytes/bytes/api/__init__.py | 2 +- keiko/keiko/api.py | 2 +- octopoes/octopoes/api/api.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/boefjes/boefjes/katalogus/api.py b/boefjes/boefjes/katalogus/api.py index cefec7690dc..d763ac10fda 100644 --- a/boefjes/boefjes/katalogus/api.py +++ b/boefjes/boefjes/katalogus/api.py @@ -35,7 +35,7 @@ resource = Resource(attributes={SERVICE_NAME: "katalogus"}) provider = TracerProvider(resource=resource) - processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=settings.span_export_grpc_endpoint)) + processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=str(settings.span_export_grpc_endpoint))) provider.add_span_processor(processor) trace.set_tracer_provider(provider) diff --git a/bytes/bytes/api/__init__.py b/bytes/bytes/api/__init__.py index 15468e8dd9d..7805c9fd67d 100644 --- a/bytes/bytes/api/__init__.py +++ b/bytes/bytes/api/__init__.py @@ -32,7 +32,7 @@ resource = Resource(attributes={SERVICE_NAME: "bytes"}) provider = TracerProvider(resource=resource) - processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=get_settings().span_export_grpc_endpoint)) + processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=str(get_settings().span_export_grpc_endpoint))) provider.add_span_processor(processor) trace.set_tracer_provider(provider) diff --git a/keiko/keiko/api.py b/keiko/keiko/api.py index 54d0eb5955a..0e25c76b6ff 100644 --- a/keiko/keiko/api.py +++ b/keiko/keiko/api.py @@ -35,7 +35,7 @@ def construct_api(settings: Settings) -> FastAPI: resource = Resource(attributes={SERVICE_NAME: "keiko"}) provider = TracerProvider(resource=resource) - processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=settings.span_export_grpc_endpoint)) + processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=str(settings.span_export_grpc_endpoint))) provider.add_span_processor(processor) trace.set_tracer_provider(provider) diff --git a/octopoes/octopoes/api/api.py b/octopoes/octopoes/api/api.py index 564735ebc02..b34b2c98a00 100644 --- a/octopoes/octopoes/api/api.py +++ b/octopoes/octopoes/api/api.py @@ -49,7 +49,7 @@ resource = Resource(attributes={SERVICE_NAME: "octopoes"}) provider = TracerProvider(resource=resource) - processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=settings.span_export_grpc_endpoint)) + processor = BatchSpanProcessor(OTLPSpanExporter(endpoint=str(settings.span_export_grpc_endpoint))) provider.add_span_processor(processor) trace.set_tracer_provider(provider) From f517d5b4c64e2d570fd0c9c4b2848d13fd0d8024 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:21:31 +0100 Subject: [PATCH 09/85] Fix mail report json (#2426) --- .../aggregate_organisation_report/report.py | 4 +++- .../report_types/mail_report/report.py | 22 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/rocky/reports/report_types/aggregate_organisation_report/report.py b/rocky/reports/report_types/aggregate_organisation_report/report.py index 3d269ef575b..01c2f4c4c97 100644 --- a/rocky/reports/report_types/aggregate_organisation_report/report.py +++ b/rocky/reports/report_types/aggregate_organisation_report/report.py @@ -6,6 +6,7 @@ from octopoes.connector.octopoes import OctopoesAPIConnector from octopoes.models import Reference +from octopoes.models.exception import ObjectNotFoundException from octopoes.models.ooi.config import Config from reports.report_types.definitions import AggregateReport, ReportType from reports.report_types.ipv6_report.report import IPv6Report @@ -460,7 +461,8 @@ def aggregate_reports( report = report_type(connector) data = report.generate_data(ooi, valid_time=valid_time) report_data[ooi][report_type.id] = data - except Exception: + except ObjectNotFoundException: + logger.error("Object not found: %s", ooi) error_oois.append(ooi) post_processed_data = aggregate_report.post_process_data(report_data, valid_time=valid_time) diff --git a/rocky/reports/report_types/mail_report/report.py b/rocky/reports/report_types/mail_report/report.py index 75cadf47c62..34fa5c5e111 100644 --- a/rocky/reports/report_types/mail_report/report.py +++ b/rocky/reports/report_types/mail_report/report.py @@ -49,17 +49,29 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: number_of_dkim = number_of_hostnames for hostname in hostnames: - measures = self._get_measures(valid_time, hostname) - mail_security_measures[hostname] = measures + measures = self._get_measures(valid_time, hostname.reference) + mail_security_measures[hostname.primary_key] = measures number_of_spf -= ( - 1 if list(filter(lambda finding: finding.id == "KAT-NO-SPF", mail_security_measures[hostname])) else 0 + 1 + if list( + filter(lambda finding: finding.id == "KAT-NO-SPF", mail_security_measures[hostname.primary_key]) + ) + else 0 ) number_of_dmarc -= ( - 1 if list(filter(lambda finding: finding.id == "KAT-NO-DMARC", mail_security_measures[hostname])) else 0 + 1 + if list( + filter(lambda finding: finding.id == "KAT-NO-DMARC", mail_security_measures[hostname.primary_key]) + ) + else 0 ) number_of_dkim -= ( - 1 if list(filter(lambda finding: finding.id == "KAT-NO-DKIM", mail_security_measures[hostname])) else 0 + 1 + if list( + filter(lambda finding: finding.id == "KAT-NO-DKIM", mail_security_measures[hostname.primary_key]) + ) + else 0 ) return { From 3d00abe8c7f86cce1ef36dd1274d66fd34521fef Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Mon, 5 Feb 2024 15:55:13 +0100 Subject: [PATCH 10/85] Fix open ports report (#2430) --- rocky/reports/report_types/open_ports_report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocky/reports/report_types/open_ports_report/report.py b/rocky/reports/report_types/open_ports_report/report.py index 1bdeb2e91db..70b83471333 100644 --- a/rocky/reports/report_types/open_ports_report/report.py +++ b/rocky/reports/report_types/open_ports_report/report.py @@ -36,7 +36,7 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: return {} references = [ip.reference for ip in ips] else: - references = [ooi] + references = [ooi.reference] results = {} for ref in references: From 5bf2bbdf82d803f1ee8fb848f55031023b83e3e0 Mon Sep 17 00:00:00 2001 From: Jan Klopper Date: Mon, 5 Feb 2024 17:53:12 +0100 Subject: [PATCH 11/85] minor speedup, Return immediately on the first disabled plugin for report check (#2434) --- rocky/reports/views/base.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rocky/reports/views/base.py b/rocky/reports/views/base.py index d8a510d918d..1584d4e1985 100644 --- a/rocky/reports/views/base.py +++ b/rocky/reports/views/base.py @@ -116,11 +116,11 @@ def get_required_optional_plugins(self, plugin_ids: Dict[str, Set[str]]) -> Dict return plugins def are_plugins_enabled(self, plugins_dict: Dict[str, Plugin]) -> bool: - enabled_plugins = [] for k, plugins in plugins_dict.items(): for plugin in plugins: - enabled_plugins.append(plugin.enabled) - return all(enabled_plugins) + if not plugin.enabled: + return False + return True def get_report_types_from_choice(self) -> List[Type[Report]]: report_types = [] From c01288c94802138764477b3b4e22ce1858b24c0f Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Tue, 6 Feb 2024 10:23:58 +0100 Subject: [PATCH 12/85] use oois instead of references (#2433) Co-authored-by: Rieven Co-authored-by: Jeroen Dekkers --- rocky/reports/report_types/mail_report/report.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/rocky/reports/report_types/mail_report/report.py b/rocky/reports/report_types/mail_report/report.py index 34fa5c5e111..3a67ebe432f 100644 --- a/rocky/reports/report_types/mail_report/report.py +++ b/rocky/reports/report_types/mail_report/report.py @@ -36,12 +36,9 @@ def generate_data(self, input_ooi: str, valid_time: datetime) -> Dict[str, Any]: if ooi.reference.class_type == Hostname: hostnames = [ooi] elif ooi.reference.class_type in (IPAddressV4, IPAddressV6): - hostnames = [ - x.reference - for x in self.octopoes_api_connector.query( - "IPAddress. Date: Tue, 6 Feb 2024 10:33:46 +0100 Subject: [PATCH 13/85] Update `fastapi` (#2444) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Jan Klopper --- boefjes/poetry.lock | 32 +++++++++++++++++++++++++++----- boefjes/pyproject.toml | 2 +- boefjes/requirements-dev.txt | 30 ++++++++++++++++++++++++++---- boefjes/requirements.txt | 30 ++++++++++++++++++++++++++---- bytes/poetry.lock | 31 ++++++++++++++++++++++++++----- bytes/pyproject.toml | 2 +- bytes/requirements-dev.txt | 27 ++++++++++++++++++++++++--- bytes/requirements.txt | 27 ++++++++++++++++++++++++--- keiko/poetry.lock | 10 +++++----- keiko/pyproject.toml | 2 +- keiko/requirements-dev.txt | 6 +++--- keiko/requirements.txt | 6 +++--- mula/poetry.lock | 10 +++++----- mula/pyproject.toml | 2 +- mula/requirements-dev.txt | 6 +++--- mula/requirements.txt | 6 +++--- octopoes/poetry.lock | 12 +++++++----- octopoes/pyproject.toml | 2 +- octopoes/requirements-dev.txt | 10 ++++++---- octopoes/requirements.txt | 10 ++++++---- 20 files changed, 199 insertions(+), 64 deletions(-) diff --git a/boefjes/poetry.lock b/boefjes/poetry.lock index 590f02499b3..a30deeb6ca4 100644 --- a/boefjes/poetry.lock +++ b/boefjes/poetry.lock @@ -652,13 +652,13 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.0" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.0-py3-none-any.whl", hash = "sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093"}, - {file = "fastapi-0.109.0.tar.gz", hash = "sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [package.dependencies] @@ -667,7 +667,7 @@ starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "filelock" @@ -2232,6 +2232,7 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -2454,30 +2455,51 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -2854,4 +2876,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "94e6972faf74802680fafa042c36542b9efc06967cc3ad73816457bfe805d3de" +content-hash = "3b34340e4f02541aa473bd7525bbeba62d543494ba947a075f750624235f3f07" diff --git a/boefjes/pyproject.toml b/boefjes/pyproject.toml index a02fec25f0f..200e47053f0 100644 --- a/boefjes/pyproject.toml +++ b/boefjes/pyproject.toml @@ -13,7 +13,7 @@ httpx = "^0.26.0" jsonschema = "^4.17.0" pydantic = "^2.4.2" docker = "^6.1.3" -fastapi = "^0.109.0" +fastapi = "^0.109.1" uvicorn = "^0.26.0" psycopg2 = "^2.9.6" pynacl = "^1.5.0" diff --git a/boefjes/requirements-dev.txt b/boefjes/requirements-dev.txt index 4d04bc62806..15c652d870d 100644 --- a/boefjes/requirements-dev.txt +++ b/boefjes/requirements-dev.txt @@ -318,9 +318,9 @@ docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1075,7 +1075,8 @@ referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1200,9 +1201,12 @@ soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1210,20 +1214,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ diff --git a/boefjes/requirements.txt b/boefjes/requirements.txt index 05561ca4271..61f0d13fde3 100644 --- a/boefjes/requirements.txt +++ b/boefjes/requirements.txt @@ -318,9 +318,9 @@ docker==6.1.3 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -1063,7 +1063,8 @@ referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 @@ -1188,9 +1189,12 @@ soupsieve==2.5 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690 \ --hash=sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7 sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -1198,20 +1202,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ diff --git a/bytes/poetry.lock b/bytes/poetry.lock index 13eaade40d0..c02678501b2 100644 --- a/bytes/poetry.lock +++ b/bytes/poetry.lock @@ -478,13 +478,13 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.0" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.0-py3-none-any.whl", hash = "sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093"}, - {file = "fastapi-0.109.0.tar.gz", hash = "sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [package.dependencies] @@ -493,7 +493,7 @@ starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "googleapis-common-protos" @@ -1714,30 +1714,51 @@ description = "Database Abstraction Library" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ + {file = "SQLAlchemy-1.4.51-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678"}, {file = "SQLAlchemy-1.4.51-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win32.whl", hash = "sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee"}, + {file = "SQLAlchemy-1.4.51-cp310-cp310-win_amd64.whl", hash = "sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f"}, {file = "SQLAlchemy-1.4.51-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win32.whl", hash = "sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81"}, + {file = "SQLAlchemy-1.4.51-cp311-cp311-win_amd64.whl", hash = "sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916"}, {file = "SQLAlchemy-1.4.51-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win32.whl", hash = "sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87"}, + {file = "SQLAlchemy-1.4.51-cp312-cp312-win_amd64.whl", hash = "sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c"}, {file = "SQLAlchemy-1.4.51-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win32.whl", hash = "sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054"}, + {file = "SQLAlchemy-1.4.51-cp36-cp36m-win_amd64.whl", hash = "sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c55040d8ea65414de7c47f1a23823cd9f3fad0dc93e6b6b728fee81230f817b"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade"}, {file = "SQLAlchemy-1.4.51-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win32.whl", hash = "sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3"}, + {file = "SQLAlchemy-1.4.51-cp37-cp37m-win_amd64.whl", hash = "sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3"}, {file = "SQLAlchemy-1.4.51-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win32.whl", hash = "sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b"}, + {file = "SQLAlchemy-1.4.51-cp38-cp38-win_amd64.whl", hash = "sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea"}, {file = "SQLAlchemy-1.4.51-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win32.whl", hash = "sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee"}, + {file = "SQLAlchemy-1.4.51-cp39-cp39-win_amd64.whl", hash = "sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba"}, {file = "SQLAlchemy-1.4.51.tar.gz", hash = "sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9"}, ] @@ -1948,4 +1969,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "073bb5edb809027a7aad5a37a27620bba1a1711e77b6fd3a07f346ce328b9d01" +content-hash = "232fb179c8f928013bd75a092e84af12b5ebe6bc0e2c0f92513e98a39f01ce2b" diff --git a/bytes/pyproject.toml b/bytes/pyproject.toml index ac3bb41e011..911c6cd02c8 100644 --- a/bytes/pyproject.toml +++ b/bytes/pyproject.toml @@ -18,7 +18,7 @@ charset-normalizer = "^3.1.0" click = "^8.1.3" cryptography = "^42.0.1" ecdsa = "^0.18.0" -fastapi = "^0.109.0" +fastapi = "^0.109.1" greenlet = "^2.0.1" h11 = "^0.13.0" idna = "^3.4" diff --git a/bytes/requirements-dev.txt b/bytes/requirements-dev.txt index 1212a6e94ef..d3e977870fb 100644 --- a/bytes/requirements-dev.txt +++ b/bytes/requirements-dev.txt @@ -245,9 +245,9 @@ ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -735,9 +735,12 @@ sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -745,20 +748,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ diff --git a/bytes/requirements.txt b/bytes/requirements.txt index 01a09d24d44..aa539b9cbd6 100644 --- a/bytes/requirements.txt +++ b/bytes/requirements.txt @@ -239,9 +239,9 @@ ecdsa==0.18.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 @@ -658,9 +658,12 @@ sniffio==1.3.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101 \ --hash=sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384 sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:0525c4905b4b52d8ccc3c203c9d7ab2a80329ffa077d4bacf31aefda7604dc65 \ --hash=sha256:0535d5b57d014d06ceeaeffd816bb3a6e2dddeb670222570b8c4953e2d2ea678 \ --hash=sha256:0892e7ac8bc76da499ad3ee8de8da4d7905a3110b952e2a35a940dab1ffa550e \ --hash=sha256:0d661cff58c91726c601cc0ee626bf167b20cc4d7941c93c5f3ac28dc34ddbea \ + --hash=sha256:1980e6eb6c9be49ea8f89889989127daafc43f0b1b6843d71efab1514973cca0 \ + --hash=sha256:1a09d5bd1a40d76ad90e5570530e082ddc000e1d92de495746f6257dc08f166b \ --hash=sha256:245c67c88e63f1523e9216cad6ba3107dea2d3ee19adc359597a628afcabfbcb \ --hash=sha256:2ad16880ccd971ac8e570550fbdef1385e094b022d6fc85ef3ce7df400dddad3 \ --hash=sha256:2be4e6294c53f2ec8ea36486b56390e3bcaa052bf3a9a47005687ccf376745d1 \ @@ -668,20 +671,38 @@ sqlalchemy==1.4.51 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:352df882088a55293f621328ec33b6ffca936ad7f23013b22520542e1ab6ad1b \ --hash=sha256:3823dda635988e6744d4417e13f2e2b5fe76c4bf29dd67e95f98717e1b094cad \ --hash=sha256:38ef80328e3fee2be0a1abe3fe9445d3a2e52a1282ba342d0dab6edf1fef4707 \ + --hash=sha256:39b02b645632c5fe46b8dd30755682f629ffbb62ff317ecc14c998c21b2896ff \ + --hash=sha256:3b0cd89a7bd03f57ae58263d0f828a072d1b440c8c2949f38f3b446148321171 \ --hash=sha256:3ec7a0ed9b32afdf337172678a4a0e6419775ba4e649b66f49415615fa47efbd \ + --hash=sha256:3f0ef620ecbab46e81035cf3dedfb412a7da35340500ba470f9ce43a1e6c423b \ + --hash=sha256:50e074aea505f4427151c286955ea025f51752fa42f9939749336672e0674c81 \ --hash=sha256:55e699466106d09f028ab78d3c2e1f621b5ef2c8694598242259e4515715da7c \ + --hash=sha256:5e180fff133d21a800c4f050733d59340f40d42364fcb9d14f6a67764bdc48d2 \ --hash=sha256:6cacc0b2dd7d22a918a9642fc89840a5d3cee18a0e1fe41080b1141b23b10916 \ + --hash=sha256:7af40425ac535cbda129d9915edcaa002afe35d84609fd3b9d6a8c46732e02ee \ + --hash=sha256:7d8139ca0b9f93890ab899da678816518af74312bb8cd71fb721436a93a93298 \ --hash=sha256:7deeae5071930abb3669b5185abb6c33ddfd2398f87660fafdb9e6a5fb0f3f2f \ --hash=sha256:86a22143a4001f53bf58027b044da1fb10d67b62a785fc1390b5c7f089d9838c \ --hash=sha256:8ca484ca11c65e05639ffe80f20d45e6be81fbec7683d6c9a15cd421e6e8b340 \ + --hash=sha256:8d1d7d63e5d2f4e92a39ae1e897a5d551720179bb8d1254883e7113d3826d43c \ + --hash=sha256:8e702e7489f39375601c7ea5a0bef207256828a2bc5986c65cb15cd0cf097a87 \ + --hash=sha256:a055ba17f4675aadcda3005df2e28a86feb731fdcc865e1f6b4f209ed1225cba \ + --hash=sha256:a33cb3f095e7d776ec76e79d92d83117438b6153510770fcd57b9c96f9ef623d \ + --hash=sha256:a61184c7289146c8cff06b6b41807c6994c6d437278e72cf00ff7fe1c7a263d1 \ --hash=sha256:af55cc207865d641a57f7044e98b08b09220da3d1b13a46f26487cc2f898a072 \ + --hash=sha256:b00cf0471888823b7a9f722c6c41eb6985cf34f077edcf62695ac4bed6ec01ee \ + --hash=sha256:b03850c290c765b87102959ea53299dc9addf76ca08a06ea98383348ae205c99 \ --hash=sha256:b97fd5bb6b7c1a64b7ac0632f7ce389b8ab362e7bd5f60654c2a418496be5d7f \ --hash=sha256:c37bc677690fd33932182b85d37433845de612962ed080c3e4d92f758d1bd894 \ + --hash=sha256:cecb66492440ae8592797dd705a0cbaa6abe0555f4fa6c5f40b078bd2740fc6b \ + --hash=sha256:d0a83afab5e062abffcdcbcc74f9d3ba37b2385294dd0927ad65fc6ebe04e054 \ --hash=sha256:d3cf56cc36d42908495760b223ca9c2c0f9f0002b4eddc994b24db5fcb86a9e4 \ --hash=sha256:e646b19f47d655261b22df9976e572f588185279970efba3d45c377127d35349 \ --hash=sha256:e7908c2025eb18394e32d65dd02d2e37e17d733cdbe7d78231c2b6d7eb20cdb9 \ --hash=sha256:e8f2df79a46e130235bc5e1bbef4de0583fb19d481eaa0bffa76e8347ea45ec6 \ + --hash=sha256:eaeeb2464019765bc4340214fca1143081d49972864773f3f1e95dba5c7edc7d \ --hash=sha256:eb18549b770351b54e1ab5da37d22bc530b8bfe2ee31e22b9ebe650640d2ef12 \ + --hash=sha256:f2e5b6f5cf7c18df66d082604a1d9c7a2d18f7d1dbe9514a2afaccbb51cc4fc3 \ --hash=sha256:f8cafa6f885a0ff5e39efa9325195217bb47d5929ab0051636610d24aef45ade starlette==0.35.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:3e2639dac3520e4f58734ed22553f950d3f3cb1001cd2eaac4d57e8cdc5f66bc \ diff --git a/keiko/poetry.lock b/keiko/poetry.lock index 11f46276744..e6c1d8fdc85 100644 --- a/keiko/poetry.lock +++ b/keiko/poetry.lock @@ -232,13 +232,13 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.0" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.0-py3-none-any.whl", hash = "sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093"}, - {file = "fastapi-0.109.0.tar.gz", hash = "sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [package.dependencies] @@ -247,7 +247,7 @@ starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "googleapis-common-protos" @@ -1377,4 +1377,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "b584a2e40ef373eabafe93ce236da8435c461d521843d33206e200190b0d1bb3" +content-hash = "030b7816ef118bfc426ef581e592b4d12ab52705234be2218f736269fc3f07bf" diff --git a/keiko/pyproject.toml b/keiko/pyproject.toml index 14797af7ace..51a2fea4c57 100644 --- a/keiko/pyproject.toml +++ b/keiko/pyproject.toml @@ -10,7 +10,7 @@ python = "^3.8" click = "^8.1.3" pydantic = "^2.6.0" Jinja2 = "^3.1.3" -fastapi = "^0.109.0" +fastapi = "^0.109.1" uvicorn = "^0.26.0" opentelemetry-sdk = "^1.19.0" opentelemetry-exporter-otlp-proto-grpc = "^1.19.0" diff --git a/keiko/requirements-dev.txt b/keiko/requirements-dev.txt index 4e574018988..a2e142de512 100644 --- a/keiko/requirements-dev.txt +++ b/keiko/requirements-dev.txt @@ -116,9 +116,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 diff --git a/keiko/requirements.txt b/keiko/requirements.txt index ca655a47890..bc87b2ff0e0 100644 --- a/keiko/requirements.txt +++ b/keiko/requirements.txt @@ -116,9 +116,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 diff --git a/mula/poetry.lock b/mula/poetry.lock index e57cb891558..911f5296554 100644 --- a/mula/poetry.lock +++ b/mula/poetry.lock @@ -364,13 +364,13 @@ typing-extensions = {version = ">=3.10.0.1", markers = "python_version <= \"3.8\ [[package]] name = "fastapi" -version = "0.109.0" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.0-py3-none-any.whl", hash = "sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093"}, - {file = "fastapi-0.109.0.tar.gz", hash = "sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [package.dependencies] @@ -379,7 +379,7 @@ starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "googleapis-common-protos" @@ -1724,4 +1724,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "d13c4fbcd2662389b60dafaaa9835d5777f76817ca1f32e198817958e8e4f063" +content-hash = "243c7f242dd5911d989d86d2464722ceedc97f9682fa1bcbeef08ab3e26a0a54" diff --git a/mula/pyproject.toml b/mula/pyproject.toml index 95cc09d0cbb..a3ab0fd9f5f 100644 --- a/mula/pyproject.toml +++ b/mula/pyproject.toml @@ -8,7 +8,7 @@ license = "EUPL" [tool.poetry.dependencies] python = "^3.8" alembic = "^1.12.1" -fastapi = "^0.109.0" +fastapi = "^0.109.1" mmh3 = "^4.0.1" pika = "^1.3.2" prometheus-client = "^0.19.0" diff --git a/mula/requirements-dev.txt b/mula/requirements-dev.txt index 7977c34e3c7..f0208e72f0c 100644 --- a/mula/requirements-dev.txt +++ b/mula/requirements-dev.txt @@ -181,9 +181,9 @@ factory-boy==3.3.0 ; python_version >= "3.8" and python_version < "4.0" \ faker==22.6.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:2b57f0256da6b45b7851dca87836ef5e2ae2fbb64d63d8697f1e47830d7b505d \ --hash=sha256:fa6d969728ef3da6229da91267a1bd4e6b902044c4822012d4fc46c71bb92b26 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 diff --git a/mula/requirements.txt b/mula/requirements.txt index 0f208159aa3..caf1852e194 100644 --- a/mula/requirements.txt +++ b/mula/requirements.txt @@ -122,9 +122,9 @@ deprecated==1.2.14 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a googleapis-common-protos==1.62.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 diff --git a/octopoes/poetry.lock b/octopoes/poetry.lock index 0a184a55819..7913dc10705 100644 --- a/octopoes/poetry.lock +++ b/octopoes/poetry.lock @@ -520,13 +520,13 @@ test = ["pytest (>=6)"] [[package]] name = "fastapi" -version = "0.109.0" +version = "0.109.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.8" files = [ - {file = "fastapi-0.109.0-py3-none-any.whl", hash = "sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093"}, - {file = "fastapi-0.109.0.tar.gz", hash = "sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191"}, + {file = "fastapi-0.109.1-py3-none-any.whl", hash = "sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534"}, + {file = "fastapi-0.109.1.tar.gz", hash = "sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a"}, ] [package.dependencies] @@ -535,7 +535,7 @@ starlette = ">=0.35.0,<0.36.0" typing-extensions = ">=4.8.0" [package.extras] -all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.5)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] [[package]] name = "filelock" @@ -1661,6 +1661,7 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -1739,6 +1740,7 @@ optional = false python-versions = "*" files = [ {file = "requests-file-2.0.0.tar.gz", hash = "sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972"}, + {file = "requests_file-2.0.0-py2.py3-none-any.whl", hash = "sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf"}, ] [package.dependencies] @@ -2374,4 +2376,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "1c8e6e70c5b4015745ad6dd53b4b72039f9dd11ad97867be98cbd96e59678568" +content-hash = "b75f1b93bc8b567409229c94a493968499193ae88db874d5a1d5a6770450a467" diff --git a/octopoes/pyproject.toml b/octopoes/pyproject.toml index 69ded0c49d6..568e757e3c0 100644 --- a/octopoes/pyproject.toml +++ b/octopoes/pyproject.toml @@ -13,7 +13,7 @@ build-backend = "setuptools.build_meta:__legacy__" python = "^3.8" requests = "^2.31.0" pydantic = "^2.4.2" -fastapi = "^0.109.0" +fastapi = "^0.109.1" uvicorn = "^0.26.0" pika = "^1.3.1" PyYAML = "^6.0" diff --git a/octopoes/requirements-dev.txt b/octopoes/requirements-dev.txt index befab65a2b5..834c3318957 100644 --- a/octopoes/requirements-dev.txt +++ b/octopoes/requirements-dev.txt @@ -230,9 +230,9 @@ dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -671,6 +671,7 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -696,7 +697,8 @@ referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests-mock==1.11.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:ef10b572b489a5f28e09b708697208c4a3b2b89ef80a9f01584340ea357ec3c4 \ --hash=sha256:f7fae383f228633f6bececebdab236c478ace2284d6292c6e7e2867b9ab74d15 diff --git a/octopoes/requirements.txt b/octopoes/requirements.txt index 0f43cf8f0ed..e6101ca47ce 100644 --- a/octopoes/requirements.txt +++ b/octopoes/requirements.txt @@ -174,9 +174,9 @@ dnspython==2.5.0 ; python_version >= "3.8" and python_version < "4.0" \ exceptiongroup==1.2.0 ; python_version >= "3.8" and python_version < "3.11" \ --hash=sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14 \ --hash=sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68 -fastapi==0.109.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:8c77515984cd8e8cfeb58364f8cc7a28f0692088475e2614f7bf03275eba9093 \ - --hash=sha256:b978095b9ee01a5cf49b19f4bc1ac9b8ca83aa076e770ef8fd9af09a2b88d191 +fastapi==0.109.1 ; python_version >= "3.8" and python_version < "4.0" \ + --hash=sha256:510042044906b17b6d9149135d90886ade170bf615efcfb5533f568ae6d88534 \ + --hash=sha256:5402389843a3561918634eb327e86b9ae98645a9e7696bede9074449c48d610a filelock==3.13.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c @@ -506,6 +506,7 @@ pyyaml==6.0.1 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4 \ --hash=sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba \ --hash=sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8 \ + --hash=sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef \ --hash=sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5 \ --hash=sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd \ --hash=sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3 \ @@ -531,7 +532,8 @@ referencing==0.33.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5 \ --hash=sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7 requests-file==2.0.0 ; python_version >= "3.8" and python_version < "4.0" \ - --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 + --hash=sha256:20c5931629c558fda566cacc10cfe2cd502433e628f568c34c80d96a0cc95972 \ + --hash=sha256:3e493d390adb44aa102ebea827a48717336d5268968c370eaf19abaf5cae13bf requests==2.31.0 ; python_version >= "3.8" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 From 1b389906bf79db4995296cc4f48155bc54ec3845 Mon Sep 17 00:00:00 2001 From: noamblitz <43830693+noamblitz@users.noreply.github.com> Date: Tue, 6 Feb 2024 12:50:47 +0100 Subject: [PATCH 14/85] fix wordpress check (#2445) --- boefjes/boefjes/plugins/kat_wpscan/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boefjes/boefjes/plugins/kat_wpscan/main.py b/boefjes/boefjes/plugins/kat_wpscan/main.py index c0d3a36f108..ac29fb5ceed 100644 --- a/boefjes/boefjes/plugins/kat_wpscan/main.py +++ b/boefjes/boefjes/plugins/kat_wpscan/main.py @@ -13,7 +13,7 @@ def run(boefje_meta: BoefjeMeta) -> List[Tuple[set, Union[bytes, str]]]: input_ = boefje_meta.arguments["input"] if input_["software"]["name"] != "WordPress" or ( - "netloc" not in input_["ooi"] or "name" not in input_["ooi"]["netloc"] + "netloc" not in input_["ooi"] or "name" not in input_["ooi"]["netloc"].dict() ): return [(set(), "")] From c2e17850e0e708bdb75260a3c39fd0af111798ac Mon Sep 17 00:00:00 2001 From: Donny Peeters <46660228+Donnype@users.noreply.github.com> Date: Tue, 6 Feb 2024 21:46:02 +0100 Subject: [PATCH 15/85] Allow creation of declared scan profiles through normalizers (#2428) Signed-off-by: Donny Peeters Co-authored-by: Jan Klopper --- boefjes/boefjes/app.py | 8 +- boefjes/boefjes/config.py | 8 +- boefjes/boefjes/job_handler.py | 72 +++++++++++---- boefjes/boefjes/job_models.py | 8 +- boefjes/boefjes/local.py | 8 +- .../boefjes/plugins/kat_external_db/main.py | 2 +- .../plugins/kat_external_db/normalize.py | 13 ++- boefjes/tests/examples/external_db.json | 25 ++++++ boefjes/tests/test_scan_profiles.py | 87 +++++++++++++++++++ boefjes/tests/test_tasks.py | 2 +- boefjes/tools/run_boefje.py | 4 +- boefjes/tools/run_normalizer.py | 6 +- 12 files changed, 212 insertions(+), 31 deletions(-) create mode 100644 boefjes/tests/examples/external_db.json create mode 100644 boefjes/tests/test_scan_profiles.py diff --git a/boefjes/boefjes/app.py b/boefjes/boefjes/app.py index f228a590e51..bc5e8e2abb3 100644 --- a/boefjes/boefjes/app.py +++ b/boefjes/boefjes/app.py @@ -16,7 +16,7 @@ TaskStatus, ) from boefjes.config import Settings -from boefjes.job_handler import BoefjeHandler, NormalizerHandler +from boefjes.job_handler import BoefjeHandler, NormalizerHandler, bytes_api_client from boefjes.katalogus.local_repository import get_local_repository from boefjes.local import LocalBoefjeJobRunner, LocalNormalizerJobRunner from boefjes.runtime_interfaces import Handler, WorkerManager @@ -254,9 +254,11 @@ def _start_working( def get_runtime_manager(settings: Settings, queue: WorkerManager.Queue, log_level: str) -> WorkerManager: local_repository = get_local_repository() if queue is WorkerManager.Queue.BOEFJES: - item_handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository) + item_handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository, bytes_api_client) else: - item_handler = NormalizerHandler(LocalNormalizerJobRunner(local_repository)) + item_handler = NormalizerHandler( + LocalNormalizerJobRunner(local_repository), bytes_api_client, settings.scan_profile_whitelist + ) return SchedulerWorkerManager( item_handler, diff --git a/boefjes/boefjes/config.py b/boefjes/boefjes/config.py index 13b2f4e8cec..73650508447 100644 --- a/boefjes/boefjes/config.py +++ b/boefjes/boefjes/config.py @@ -3,7 +3,7 @@ from pathlib import Path from typing import Any, Dict, Optional, Tuple, Type -from pydantic import AmqpDsn, AnyHttpUrl, Field, FilePath, IPvAnyAddress, PostgresDsn +from pydantic import AmqpDsn, AnyHttpUrl, Field, FilePath, IPvAnyAddress, PostgresDsn, conint from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict from pydantic_settings.sources import EnvSettingsSource @@ -52,6 +52,12 @@ class Settings(BaseSettings): "1.1.1.1", description="Name server used for remote DNS resolution in the boefje runner" ) + scan_profile_whitelist: Dict[str, conint(strict=True, ge=0, le=4)] = Field( + default_factory=dict, + description="Whitelist for normalizer ids allowed to produce scan profiles, including a maximum level.", + examples=['{"kat_external_db_normalize": 3, "kat_dns_normalize": 1}'], + ) + # Queue configuration queue_uri: AmqpDsn = Field(..., description="KAT queue URI", examples=["amqp://"], validation_alias="QUEUE_URI") diff --git a/boefjes/boefjes/job_handler.py b/boefjes/boefjes/job_handler.py index 4a56c6b25f5..9ca71016150 100644 --- a/boefjes/boefjes/job_handler.py +++ b/boefjes/boefjes/job_handler.py @@ -3,7 +3,7 @@ import traceback from datetime import datetime, timedelta, timezone from enum import Enum -from typing import Any, Dict, List +from typing import Any, Dict, List, Optional import requests from pydantic.tools import parse_obj_as @@ -16,13 +16,14 @@ BoefjeMeta, NormalizerMeta, NormalizerPlainOOI, + NormalizerScanProfile, ) from boefjes.katalogus.local_repository import LocalPluginRepository from boefjes.plugins.models import _default_mime_types from boefjes.runtime_interfaces import BoefjeJobRunner, Handler, NormalizerJobRunner from octopoes.api.models import Declaration, Observation from octopoes.connector.octopoes import OctopoesAPIConnector -from octopoes.models import OOI, Reference +from octopoes.models import OOI, Reference, ScanProfile from octopoes.models.exception import ObjectNotFoundException from octopoes.models.types import OOIType @@ -81,6 +82,10 @@ def serialize_ooi(ooi: OOI): return serialized_oois +def get_octopoes_api_connector(org_code: str): + return OctopoesAPIConnector(str(settings.octopoes_api), org_code) + + def get_environment_settings(boefje_meta: BoefjeMeta, environment_keys: List[str]) -> Dict[str, str]: try: katalogus_api = str(settings.katalogus_api).rstrip("/") @@ -106,9 +111,17 @@ def get_environment_settings(boefje_meta: BoefjeMeta, environment_keys: List[str class BoefjeHandler(Handler): - def __init__(self, job_runner, local_repository: LocalPluginRepository): - self.job_runner: BoefjeJobRunner = job_runner - self.local_repository: LocalPluginRepository = local_repository + def __init__( + self, + job_runner: BoefjeJobRunner, + local_repository: LocalPluginRepository, + bytes_client: BytesAPIClient, + octopoes_factory=get_octopoes_api_connector, + ): + self.job_runner = job_runner + self.local_repository = local_repository + self.bytes_client = bytes_client + self.octopoes_factory = octopoes_factory def handle(self, boefje_meta: BoefjeMeta) -> None: logger.info("Handling boefje %s[task_id=%s]", boefje_meta.boefje.id, str(boefje_meta.id)) @@ -129,7 +142,7 @@ def handle(self, boefje_meta: BoefjeMeta) -> None: boefje_meta.arguments["input"] = serialize_ooi( _find_ooi_in_past( Reference.from_str(boefje_meta.input_ooi), - get_octopoes_api_connector(boefje_meta.organization), + self.octopoes_factory(boefje_meta.organization), ) ) @@ -157,11 +170,11 @@ def handle(self, boefje_meta: BoefjeMeta) -> None: boefje_meta.ended_at = datetime.now(timezone.utc) logger.info("Saving to Bytes for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id)) - bytes_api_client.save_boefje_meta(boefje_meta) + self.bytes_client.save_boefje_meta(boefje_meta) if boefje_results: for boefje_added_mime_types, output in boefje_results: - raw_file_id = bytes_api_client.save_raw( + raw_file_id = self.bytes_client.save_raw( boefje_meta.id, output, mime_types.union(boefje_added_mime_types) ) logger.debug( @@ -172,19 +185,28 @@ def handle(self, boefje_meta: BoefjeMeta) -> None: class NormalizerHandler(Handler): - def __init__(self, job_runner): - self.job_runner: NormalizerJobRunner = job_runner + def __init__( + self, + job_runner: NormalizerJobRunner, + bytes_client: BytesAPIClient, + octopoes_factory=get_octopoes_api_connector, + whitelist: Optional[Dict[str, int]] = None, + ): + self.job_runner = job_runner + self.bytes_client: BytesAPIClient = bytes_client + self.octopoes_factory = octopoes_factory + self.whitelist = whitelist def handle(self, normalizer_meta: NormalizerMeta) -> None: logger.info("Handling normalizer %s[%s]", normalizer_meta.normalizer.id, normalizer_meta.id) - raw = bytes_api_client.get_raw(normalizer_meta.raw_data.id) + raw = self.bytes_client.get_raw(normalizer_meta.raw_data.id) normalizer_meta.started_at = datetime.now(timezone.utc) try: results = self.job_runner.run(normalizer_meta, raw) - connector = get_octopoes_api_connector(normalizer_meta.raw_data.boefje_meta.organization) + connector = self.octopoes_factory(normalizer_meta.raw_data.boefje_meta.organization) for observation in results.observations: reference = Reference.from_str(observation.input_ooi) @@ -207,9 +229,25 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: valid_time=normalizer_meta.raw_data.boefje_meta.ended_at, ) ) + + corrected_scan_profiles = [] + for profile in results.scan_profiles: + profile.level = min(profile.level, self.whitelist.get(normalizer_meta.normalizer.id, profile.level)) + corrected_scan_profiles.append(profile) + + validated_scan_profiles = [ + profile + for profile in corrected_scan_profiles + if self.whitelist and profile.level <= self.whitelist.get(normalizer_meta.normalizer.id, -1) + ] + if validated_scan_profiles: + connector.save_many_scan_profiles( + [self._parse_scan_profile(scan_profile) for scan_profile in results.scan_profiles], + valid_time=normalizer_meta.raw_data.boefje_meta.ended_at, + ) finally: normalizer_meta.ended_at = datetime.now(timezone.utc) - bytes_api_client.save_normalizer_meta(normalizer_meta) + self.bytes_client.save_normalizer_meta(normalizer_meta) logger.info("Done with normalizer %s[%s]", normalizer_meta.normalizer.id, normalizer_meta.id) @@ -217,6 +255,10 @@ def handle(self, normalizer_meta: NormalizerMeta) -> None: def _parse_ooi(result: NormalizerPlainOOI): return parse_obj_as(OOIType, result.model_dump()) + @staticmethod + def _parse_scan_profile(result: NormalizerScanProfile): + return parse_obj_as(ScanProfile, result.model_dump()) -def get_octopoes_api_connector(org_code: str): - return OctopoesAPIConnector(str(settings.octopoes_api), org_code) + +class InvalidWhitelist(Exception): + pass diff --git a/boefjes/boefjes/job_models.py b/boefjes/boefjes/job_models.py index 2fcbc9e10d4..a92b699edb4 100644 --- a/boefjes/boefjes/job_models.py +++ b/boefjes/boefjes/job_models.py @@ -96,10 +96,16 @@ class NormalizerDeclaration(BaseModel): ooi: NormalizerPlainOOI +class NormalizerScanProfile(BaseModel): + scan_profile_type: str + model_config = ConfigDict(populate_by_name=True, extra="allow") + + class NormalizerResult(BaseModel): # Moves all validation logic to Pydantic - item: Union[NormalizerPlainOOI, NormalizerObservation, NormalizerDeclaration] + item: Union[NormalizerPlainOOI, NormalizerObservation, NormalizerDeclaration, NormalizerScanProfile] class NormalizerOutput(BaseModel): observations: List[NormalizerObservation] = [] declarations: List[NormalizerDeclaration] = [] + scan_profiles: List[NormalizerScanProfile] = [] diff --git a/boefjes/boefjes/local.py b/boefjes/boefjes/local.py index 5291c0b456f..5dcc44c89c2 100644 --- a/boefjes/boefjes/local.py +++ b/boefjes/boefjes/local.py @@ -13,12 +13,13 @@ NormalizerOutput, NormalizerPlainOOI, NormalizerResult, + NormalizerScanProfile, ObservationsWithoutInputOOI, UnsupportedReturnTypeNormalizer, ) from boefjes.katalogus.local_repository import LocalPluginRepository from boefjes.runtime_interfaces import BoefjeJobRunner, JobRuntimeError, NormalizerJobRunner -from octopoes.models import OOI +from octopoes.models import OOI, DeclaredScanProfile logger = logging.getLogger(__name__) @@ -98,12 +99,13 @@ def _parse_results(self, normalizer_meta: NormalizerMeta, results: List[Any]) -> return NormalizerOutput( observations=observations, declarations=[result.item for result in parsed if isinstance(result.item, NormalizerDeclaration)], + scan_profiles=[result.item for result in parsed if isinstance(result.item, NormalizerScanProfile)], ) @staticmethod def _parse(result: Any) -> NormalizerResult: - if not isinstance(result, dict): # Must be an OOI. This should be phased out together with Octopoes - if not isinstance(result, OOI): + if not isinstance(result, dict): # Must be an OOI or ScanProfile. Should be phased out with Octopoes dependency + if not isinstance(result, (OOI, DeclaredScanProfile)): raise UnsupportedReturnTypeNormalizer(str(type(result))) result = result.dict() diff --git a/boefjes/boefjes/plugins/kat_external_db/main.py b/boefjes/boefjes/plugins/kat_external_db/main.py index a56481990b1..7b602f0a581 100644 --- a/boefjes/boefjes/plugins/kat_external_db/main.py +++ b/boefjes/boefjes/plugins/kat_external_db/main.py @@ -1,4 +1,4 @@ -"""Boefje script for getting domaions and ipaddresses from dadb""" +"""Boefje script for getting domains and ipaddresses from dadb""" from os import getenv from typing import List, Tuple, Union diff --git a/boefjes/boefjes/plugins/kat_external_db/normalize.py b/boefjes/boefjes/plugins/kat_external_db/normalize.py index 8e6dbb424f0..ccb26c2c90d 100644 --- a/boefjes/boefjes/plugins/kat_external_db/normalize.py +++ b/boefjes/boefjes/plugins/kat_external_db/normalize.py @@ -4,7 +4,7 @@ from typing import Iterator, Union from boefjes.job_models import NormalizerMeta -from octopoes.models import OOI +from octopoes.models import OOI, DeclaredScanProfile from octopoes.models.ooi.dns.zone import Hostname from octopoes.models.ooi.network import IPAddressV4, IPAddressV6, IPV4NetBlock, IPV6NetBlock, Network @@ -50,18 +50,25 @@ def run(normalizer_meta: NormalizerMeta, raw: Union[bytes, str]) -> Iterator[OOI ip_address = address_type(address=address, network=network.reference) yield ip_address + yield DeclaredScanProfile(reference=ip_address.reference, level=3) addresses_count += 1 if mask < interface.ip.max_prefixlen: - yield block_type( + block = block_type( start_ip=ip_address.reference, mask=mask, network=network.reference, ) + yield block + yield DeclaredScanProfile(reference=block.reference, level=3) blocks_count += 1 for hostname in follow_path_in_dict(path=DOMAIN_LIST_PATH, path_dict=results): - yield Hostname(name=follow_path_in_dict(path=DOMAIN_ITEM_PATH, path_dict=hostname), network=network.reference) + hostname = Hostname( + name=follow_path_in_dict(path=DOMAIN_ITEM_PATH, path_dict=hostname), network=network.reference + ) + yield hostname + yield DeclaredScanProfile(reference=hostname.reference, level=3) hostnames_count += 1 logging.info( diff --git a/boefjes/tests/examples/external_db.json b/boefjes/tests/examples/external_db.json new file mode 100644 index 00000000000..aa714587517 --- /dev/null +++ b/boefjes/tests/examples/external_db.json @@ -0,0 +1,25 @@ +{ + "id": "f50de284-d3c1-4f87-ba68-07b957b7a48f", + "raw_data": { + "id": "66451567-2381-4248-b5a1-d0d0985e065f", + "boefje_meta": { + "id": "f29f76c5-f7b1-4662-89c6-6dc313a9f93f", + "boefje": { + "id": "external_db" + }, + "input_ooi": "Network|internet", + "arguments": {"input": {"name": "internet"}}, + "organization": "tst", + "started_at": "2010-07-27T11:26:42.679000+00:00", + "ended_at": "2010-07-27T11:26:48.679000+00:00" + }, + "mime_types": [ + { + "value": "external_db" + } + ] + }, + "normalizer": { + "id": "kat_external_db_normalize" + } +} diff --git a/boefjes/tests/test_scan_profiles.py b/boefjes/tests/test_scan_profiles.py new file mode 100644 index 00000000000..366c5296ce3 --- /dev/null +++ b/boefjes/tests/test_scan_profiles.py @@ -0,0 +1,87 @@ +import json +import os +from pathlib import Path +from unittest import TestCase, mock + +import pytest +from pydantic import ValidationError + +from boefjes.config import Settings +from boefjes.job_handler import NormalizerHandler +from boefjes.job_models import NormalizerMeta, NormalizerScanProfile +from boefjes.katalogus.local_repository import LocalPluginRepository +from boefjes.local import LocalNormalizerJobRunner +from tests.loading import get_dummy_data + + +class ScanProfileTest(TestCase): + def test_normalizer_can_yield_scan_profiles(self): + local_repository = LocalPluginRepository(Path(__file__).parent.parent / "boefjes" / "plugins") + runner = LocalNormalizerJobRunner(local_repository) + meta = NormalizerMeta.model_validate_json(get_dummy_data("external_db.json")) + + raw = json.dumps( + { + "ip_addresses": [{"ip_address": "127.0.0.1"}, {"ip_address": "10.0.0.0"}], + "domains": [{"domain": "example.com"}], + } + ) + output = runner.run(meta, bytes(raw, "UTF-8")) + + self.assertEqual(1, len(output.observations)) + self.assertEqual(3, len(output.observations[0].results)) + self.assertEqual(3, len(output.scan_profiles)) + + profile = output.scan_profiles[0] + self.assertIsInstance(profile, NormalizerScanProfile) + self.assertEqual("IPAddressV4|internet|127.0.0.1", profile.reference) + self.assertEqual(3, profile.level) + + profile = output.scan_profiles[1] + self.assertIsInstance(profile, NormalizerScanProfile) + self.assertEqual("IPAddressV4|internet|10.0.0.0", profile.reference) + self.assertEqual(3, profile.level) + + profile = output.scan_profiles[2] + self.assertIsInstance(profile, NormalizerScanProfile) + self.assertEqual("Hostname|internet|example.com", profile.reference) + self.assertEqual(3, profile.level) + + def test_job_handler_respects_whitelist(self): + raw = { + "ip_addresses": [{"ip_address": "127.0.0.1"}, {"ip_address": "10.0.0.0"}], + "domains": [{"domain": "example.com"}], + } + bytes_mock = mock.Mock() + bytes_mock.get_raw.return_value = json.dumps(raw) + octopoes = mock.Mock() + + local_repository = LocalPluginRepository(Path(__file__).parent.parent / "boefjes" / "plugins") + runner = LocalNormalizerJobRunner(local_repository) + meta = NormalizerMeta.model_validate_json(get_dummy_data("external_db.json")) + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"x": 5}' + with pytest.raises(ValidationError): + Settings() + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"x": -1}' + with pytest.raises(ValidationError): + Settings() + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"x": 3}' + NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + assert octopoes.save_many_scan_profiles.call_count == 0 + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 2}' + NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + assert octopoes.save_many_scan_profiles.call_count == 1 + assert octopoes.save_many_scan_profiles.call_args[0][0][0].level == 2 + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 3}' + NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + assert octopoes.save_many_scan_profiles.call_count == 2 + assert octopoes.save_many_scan_profiles.call_args[0][0][0].level == 3 + + os.environ["BOEFJES_SCAN_PROFILE_WHITELIST"] = '{"kat_external_db_normalize": 4, "abc": 0}' + NormalizerHandler(runner, bytes_mock, lambda x: octopoes, Settings().scan_profile_whitelist).handle(meta) + assert octopoes.save_many_scan_profiles.call_count == 3 diff --git a/boefjes/tests/test_tasks.py b/boefjes/tests/test_tasks.py index e7ac3c33b31..4091e614ad5 100644 --- a/boefjes/tests/test_tasks.py +++ b/boefjes/tests/test_tasks.py @@ -121,7 +121,7 @@ def test_handle_boefje_with_exception(self, mock_find_ooi_in_past, mock_bytes_ap local_repository = LocalPluginRepository(Path(__file__).parent / "modules") with pytest.raises(RuntimeError): # Bytes still saves exceptions before they are reraised - BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository).handle(meta) + BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository, mock_bytes_api_client).handle(meta) mock_bytes_api_client.save_boefje_meta.assert_called_once_with(meta) mock_bytes_api_client.save_raw.assert_called_once() diff --git a/boefjes/tools/run_boefje.py b/boefjes/tools/run_boefje.py index a8aa0b77736..c8546a9bfcb 100755 --- a/boefjes/tools/run_boefje.py +++ b/boefjes/tools/run_boefje.py @@ -11,7 +11,7 @@ sys.path.append(str(Path(__file__).resolve().parent.parent)) -from boefjes.job_handler import BoefjeHandler +from boefjes.job_handler import BoefjeHandler, bytes_api_client from boefjes.job_models import Boefje, BoefjeMeta from boefjes.katalogus.local_repository import get_local_repository from boefjes.local import LocalBoefjeJobRunner @@ -31,7 +31,7 @@ def run_boefje(start_pdb, organization_code, boefje_id, input_ooi): local_repository = get_local_repository() - handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository) + handler = BoefjeHandler(LocalBoefjeJobRunner(local_repository), local_repository, bytes_api_client) try: handler.handle(meta) except Exception: diff --git a/boefjes/tools/run_normalizer.py b/boefjes/tools/run_normalizer.py index 4e7861a8f63..351b8bdf69f 100755 --- a/boefjes/tools/run_normalizer.py +++ b/boefjes/tools/run_normalizer.py @@ -9,6 +9,8 @@ import click +from boefjes.config import settings + sys.path.append(str(Path(__file__).resolve().parent.parent)) from boefjes.job_handler import NormalizerHandler, bytes_api_client @@ -33,7 +35,9 @@ def run_normalizer(start_pdb, normalizer_id, raw_id): local_repository = get_local_repository() - handler = NormalizerHandler(LocalNormalizerJobRunner(local_repository)) + handler = NormalizerHandler( + LocalNormalizerJobRunner(local_repository), bytes_api_client, settings.scan_profile_whitelist + ) try: handler.handle(meta) except Exception: From 267a8fda4693b2b42e1ed4010daf40517ae6dde4 Mon Sep 17 00:00:00 2001 From: Madelon Dohmen <99282220+madelondohmen@users.noreply.github.com> Date: Wed, 7 Feb 2024 10:21:08 +0100 Subject: [PATCH 16/85] Update DNS report (#2413) Co-authored-by: Jan Klopper --- .../report_types/dns_report/report.html | 79 +++++++------------ .../reports/report_types/dns_report/report.py | 53 ++++--------- rocky/rocky/locale/django.pot | 47 +++++++---- 3 files changed, 75 insertions(+), 104 deletions(-) diff --git a/rocky/reports/report_types/dns_report/report.html b/rocky/reports/report_types/dns_report/report.html index 5eb0e343e26..9f2e891c660 100644 --- a/rocky/reports/report_types/dns_report/report.html +++ b/rocky/reports/report_types/dns_report/report.html @@ -1,67 +1,46 @@ {% load i18n %} -